This is an automated email from the ASF dual-hosted git repository. zhfeng pushed a commit to branch 3.8.x in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit be45a5b76985db89e229ffcdcdf5981f60599bad Author: JiriOndrusek <[email protected]> AuthorDate: Thu Aug 15 11:28:16 2024 +0200 Changed default location of generated certificates to target/certs + change of configuration of ssl --- .../component/http/common/CommonProducers.java | 4 ++-- .../src/main/resources/application.properties | 4 ++-- .../component/http/netty/it/NettyHttpTest.java | 6 ++++++ .../test/support/certificate/CertificatesUtil.java | 20 +++++++++++++++++-- .../component/sftp/it/SftpTestResource.java | 5 +++-- .../camel/quarkus/component/grpc/it/GrpcRoute.java | 2 +- .../grpc/src/main/resources/application.properties | 2 +- .../camel/quarkus/component/grpc/it/GrpcTest.java | 2 +- .../camel/quarkus/kafka/ssl/KafkaSslTest.java | 2 +- .../component/lumberjack/it/LumberjackRoutes.java | 2 +- .../src/main/resources/application.properties | 2 +- .../lumberjack/it/LumberjackClientUtil.java | 8 ++++++-- .../quarkus/component/mail/MailTestResource.java | 3 ++- .../quarkus/component/nats/it/NatsRoutes.java | 4 ++-- .../component/nats/it/NatsTestResource.java | 10 +++++----- .../quarkus/component/netty/NettyProducers.java | 4 ++-- .../src/main/resources/application.properties | 5 ++--- .../component/oaipmh/it/MockOaipmhServer.java | 4 ++-- .../component/paho/mqtt5/it/PahoMqtt5Resource.java | 5 +++-- .../paho/mqtt5/it/PahoMqtt5TestResource.java | 14 +++++++------ .../camel/quarkus/component/paho/PahoResource.java | 9 ++++++--- .../component/paho/it/PahoTestResource.java | 11 ++++++++--- .../platform/http/proxy/ssl/it/Routes.java | 4 ++-- .../src/main/resources/application.properties | 19 ------------------ .../PlatformHttpSSLTestResource.java | 2 +- .../src/main/resources/application.properties | 6 +++--- .../component/http/server/it/PlatformHttpTest.java | 2 +- .../vertx/websocket/it/VertxWebsocketResource.java | 2 +- .../src/main/resources/application.properties | 2 +- .../it/VertxWebsocketClientSslProvider.java | 23 +++++++++++++++------- .../vertx/websocket/it/VertxWebsocketSslTest.java | 2 +- .../websocket/it/VertxWebsocketSslTestProfile.java | 4 ++-- 32 files changed, 111 insertions(+), 83 deletions(-) diff --git a/integration-test-groups/http/common/src/main/java/org/apache/camel/quarkus/component/http/common/CommonProducers.java b/integration-test-groups/http/common/src/main/java/org/apache/camel/quarkus/component/http/common/CommonProducers.java index 479a8c911a..baa2ef7f98 100644 --- a/integration-test-groups/http/common/src/main/java/org/apache/camel/quarkus/component/http/common/CommonProducers.java +++ b/integration-test-groups/http/common/src/main/java/org/apache/camel/quarkus/component/http/common/CommonProducers.java @@ -27,11 +27,11 @@ public class CommonProducers { @Named public SSLContextParameters sslContextParameters() { KeyStoreParameters keystoreParameters = new KeyStoreParameters(); - keystoreParameters.setResource("/certs/localhost-keystore.p12"); + keystoreParameters.setResource("file:target/certs/localhost-keystore.p12"); keystoreParameters.setPassword("localhost-keystore-password"); KeyStoreParameters truststoreParameters = new KeyStoreParameters(); - truststoreParameters.setResource("/certs/localhost-truststore.p12"); + truststoreParameters.setResource("file:target/certs/localhost-truststore.p12"); truststoreParameters.setPassword("localhost-keystore-password"); TrustManagersParameters trustManagersParameters = new TrustManagersParameters(); diff --git a/integration-test-groups/http/common/src/main/resources/application.properties b/integration-test-groups/http/common/src/main/resources/application.properties index e99d3e9f96..1b303b2b23 100644 --- a/integration-test-groups/http/common/src/main/resources/application.properties +++ b/integration-test-groups/http/common/src/main/resources/application.properties @@ -18,7 +18,7 @@ # # Quarkus # -quarkus.native.resources.includes = certs/*,restcountries/* +quarkus.native.resources.includes = target/certs/*,restcountries/* quarkus.native.add-all-charsets = true quarkus.camel.native.reflection.serialization-enabled = true @@ -31,7 +31,7 @@ quarkus.security.users.embedded.roles.admin=admin quarkus.security.users.embedded.roles.noadmin=user quarkus.http.insecure-requests=enabled -quarkus.http.ssl.certificate.key-store-file=certs/localhost-keystore.p12 +quarkus.http.ssl.certificate.key-store-file=target/certs/localhost-keystore.p12 quarkus.http.ssl.certificate.key-store-password=localhost-keystore-password quarkus.resteasy.gzip.enabled=true diff --git a/integration-test-groups/http/netty-http/src/test/java/org/apache/camel/quarkus/component/http/netty/it/NettyHttpTest.java b/integration-test-groups/http/netty-http/src/test/java/org/apache/camel/quarkus/component/http/netty/it/NettyHttpTest.java index 4b708ed845..8d065db01b 100644 --- a/integration-test-groups/http/netty-http/src/test/java/org/apache/camel/quarkus/component/http/netty/it/NettyHttpTest.java +++ b/integration-test-groups/http/netty-http/src/test/java/org/apache/camel/quarkus/component/http/netty/it/NettyHttpTest.java @@ -23,8 +23,11 @@ import io.quarkus.test.junit.QuarkusTest; import io.restassured.RestAssured; import io.restassured.response.Response; import io.restassured.response.ValidatableResponse; +import me.escoffier.certs.Format; +import me.escoffier.certs.junit5.Certificate; import org.apache.camel.quarkus.component.http.common.AbstractHttpTest; import org.apache.camel.quarkus.component.http.common.HttpTestResource; +import org.apache.camel.quarkus.test.support.certificate.TestCertificates; import org.eclipse.microprofile.config.ConfigProvider; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; @@ -34,6 +37,9 @@ import org.junit.jupiter.params.provider.ValueSource; import static org.assertj.core.api.Assertions.assertThat; import static org.hamcrest.Matchers.is; +@TestCertificates(certificates = { + @Certificate(name = HttpTestResource.KEYSTORE_NAME, formats = { + Format.PKCS12 }, password = HttpTestResource.KEYSTORE_PASSWORD) }) @QuarkusTest @QuarkusTestResource(HttpTestResource.class) @QuarkusTestResource(NettyHttpTestResource.class) diff --git a/integration-tests-support/certificate-generator/src/main/java/org/apache/camel/quarkus/test/support/certificate/CertificatesUtil.java b/integration-tests-support/certificate-generator/src/main/java/org/apache/camel/quarkus/test/support/certificate/CertificatesUtil.java index 0c0bd03e9b..d71a791bb4 100644 --- a/integration-tests-support/certificate-generator/src/main/java/org/apache/camel/quarkus/test/support/certificate/CertificatesUtil.java +++ b/integration-tests-support/certificate-generator/src/main/java/org/apache/camel/quarkus/test/support/certificate/CertificatesUtil.java @@ -17,12 +17,28 @@ package org.apache.camel.quarkus.test.support.certificate; public class CertificatesUtil { - public static final String DEFAULT_CERTS_BASEDIR = "target/classes/certs"; + public static final String DEFAULT_CERTS_BASEDIR = "target/certs"; private CertificatesUtil() { } public static String keystoreFile(String name, String extension) { - return DEFAULT_CERTS_BASEDIR + "/" + name + "-keystore." + extension; + return file(name + "-keystore", extension); + } + + public static String caCrt(String name) { + return file(name + "-ca", "crt"); + } + + public static String crt(String name) { + return file(name, "crt"); + } + + public static String key(String name) { + return file(name, "key"); + } + + private static String file(String name, String extension) { + return DEFAULT_CERTS_BASEDIR + "/" + name + "." + extension; } } diff --git a/integration-tests/ftp/src/test/java/org/apache/camel/quarkus/component/sftp/it/SftpTestResource.java b/integration-tests/ftp/src/test/java/org/apache/camel/quarkus/component/sftp/it/SftpTestResource.java index 67035d47b8..e10a13888b 100644 --- a/integration-tests/ftp/src/test/java/org/apache/camel/quarkus/component/sftp/it/SftpTestResource.java +++ b/integration-tests/ftp/src/test/java/org/apache/camel/quarkus/component/sftp/it/SftpTestResource.java @@ -20,6 +20,7 @@ import java.io.File; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; +import java.nio.file.Paths; import java.util.Collections; import java.util.Comparator; import java.util.Map; @@ -29,7 +30,7 @@ import io.quarkus.test.common.QuarkusTestResourceLifecycleManager; import org.apache.camel.quarkus.test.AvailablePortFinder; import org.apache.camel.util.CollectionHelper; import org.apache.sshd.common.file.virtualfs.VirtualFileSystemFactory; -import org.apache.sshd.common.keyprovider.ClassLoadableResourceKeyPairProvider; +import org.apache.sshd.common.keyprovider.FileKeyPairProvider; import org.apache.sshd.scp.server.ScpCommandFactory; import org.apache.sshd.server.SshServer; import org.apache.sshd.sftp.server.SftpSubsystemFactory; @@ -64,7 +65,7 @@ public class SftpTestResource implements QuarkusTestResourceLifecycleManager { sshServer = SshServer.setUpDefaultServer(); sshServer.setPort(port); - sshServer.setKeyPairProvider(new ClassLoadableResourceKeyPairProvider("certs/ftp.key")); + sshServer.setKeyPairProvider(new FileKeyPairProvider(Paths.get("target/certs/ftp.key"))); sshServer.setSubsystemFactories(Collections.singletonList(new SftpSubsystemFactory())); sshServer.setCommandFactory(new ScpCommandFactory()); sshServer.setPasswordAuthenticator((username, password, session) -> true); diff --git a/integration-tests/grpc/src/main/java/org/apache/camel/quarkus/component/grpc/it/GrpcRoute.java b/integration-tests/grpc/src/main/java/org/apache/camel/quarkus/component/grpc/it/GrpcRoute.java index 234b761109..a430dca77a 100644 --- a/integration-tests/grpc/src/main/java/org/apache/camel/quarkus/component/grpc/it/GrpcRoute.java +++ b/integration-tests/grpc/src/main/java/org/apache/camel/quarkus/component/grpc/it/GrpcRoute.java @@ -45,7 +45,7 @@ public class GrpcRoute extends RouteBuilder { // Verifies that the serviceAccountResource can be loaded on startup from("direct:googleAuthenticationType") - .toF("grpc://localhost:{{camel.grpc.test.async.server.port}}/%s?method=pingAsyncAsync&negotiationType=TLS&keyResource=certs/grpc.key&authenticationType=GOOGLE&serviceAccountResource=keys/app.json&KeyCertChainResource=certs/grpc.pem", + .toF("grpc://localhost:{{camel.grpc.test.async.server.port}}/%s?method=pingAsyncAsync&negotiationType=TLS&keyResource=file:target/certs/grpc.key&authenticationType=GOOGLE&serviceAccountResource=keys/app.json&KeyCertChainResource=target/certs/grpc.pem", PING_PONG_SERVICE); // Streaming producer strategy diff --git a/integration-tests/grpc/src/main/resources/application.properties b/integration-tests/grpc/src/main/resources/application.properties index 63661b9b4a..ec91806a1e 100644 --- a/integration-tests/grpc/src/main/resources/application.properties +++ b/integration-tests/grpc/src/main/resources/application.properties @@ -15,7 +15,7 @@ ## limitations under the License. ## --------------------------------------------------------------------------- -quarkus.native.resources.includes=certs/*.key,certs/*.pem,keys/*.json +quarkus.native.resources.includes=keys/*.json # Test codegen protobuf imports quarkus.camel.grpc.codegen.scan-for-imports=com.google.protobuf:protobuf-java,org.apache.camel.quarkus:camel-quarkus-integration-tests-support-grpc diff --git a/integration-tests/grpc/src/test/java/org/apache/camel/quarkus/component/grpc/it/GrpcTest.java b/integration-tests/grpc/src/test/java/org/apache/camel/quarkus/component/grpc/it/GrpcTest.java index fd7f1a2fb6..57b06a7d46 100644 --- a/integration-tests/grpc/src/test/java/org/apache/camel/quarkus/component/grpc/it/GrpcTest.java +++ b/integration-tests/grpc/src/test/java/org/apache/camel/quarkus/component/grpc/it/GrpcTest.java @@ -72,7 +72,7 @@ import static org.junit.jupiter.api.Assertions.fail; @TestCertificates(certificates = { @Certificate(name = "grpc", formats = { Format.PEM }) -}, baseDir = "target/certs") +}) @QuarkusTest @QuarkusTestResource(GrpcServerTestResource.class) class GrpcTest { diff --git a/integration-tests/kafka-ssl/src/test/java/org/apache/camel/quarkus/kafka/ssl/KafkaSslTest.java b/integration-tests/kafka-ssl/src/test/java/org/apache/camel/quarkus/kafka/ssl/KafkaSslTest.java index f97fae8f29..0168f0d3bb 100644 --- a/integration-tests/kafka-ssl/src/test/java/org/apache/camel/quarkus/kafka/ssl/KafkaSslTest.java +++ b/integration-tests/kafka-ssl/src/test/java/org/apache/camel/quarkus/kafka/ssl/KafkaSslTest.java @@ -34,7 +34,7 @@ import static org.hamcrest.Matchers.is; @TestCertificates(certificates = { @Certificate(name = KafkaSslTestResource.KAFKA_HOSTNAME, formats = { Format.PKCS12 }, password = KafkaSslTestResource.KAFKA_KEYSTORE_PASSWORD) -}, baseDir = KafkaSslTestResource.CERTS_BASEDIR, docker = true) +}, docker = true) @QuarkusTest @QuarkusTestResource(KafkaSslTestResource.class) public class KafkaSslTest { diff --git a/integration-tests/lumberjack/src/main/java/org/apache/camel/quarkus/component/lumberjack/it/LumberjackRoutes.java b/integration-tests/lumberjack/src/main/java/org/apache/camel/quarkus/component/lumberjack/it/LumberjackRoutes.java index c75271ac24..60d9a06694 100644 --- a/integration-tests/lumberjack/src/main/java/org/apache/camel/quarkus/component/lumberjack/it/LumberjackRoutes.java +++ b/integration-tests/lumberjack/src/main/java/org/apache/camel/quarkus/component/lumberjack/it/LumberjackRoutes.java @@ -83,7 +83,7 @@ public class LumberjackRoutes extends RouteBuilder { KeyManagersParameters keyManagersParameters = new KeyManagersParameters(); KeyStoreParameters keyStore = new KeyStoreParameters(); keyStore.setPassword("changeit"); - keyStore.setResource("certs/lumberjack-keystore.jks"); + keyStore.setResource("file:target/certs/lumberjack-keystore.jks"); keyManagersParameters.setKeyPassword("changeit"); keyManagersParameters.setKeyStore(keyStore); sslContextParameters.setKeyManagers(keyManagersParameters); diff --git a/integration-tests/lumberjack/src/main/resources/application.properties b/integration-tests/lumberjack/src/main/resources/application.properties index 9e8f5a9263..d4d3daba33 100644 --- a/integration-tests/lumberjack/src/main/resources/application.properties +++ b/integration-tests/lumberjack/src/main/resources/application.properties @@ -15,4 +15,4 @@ ## limitations under the License. ## --------------------------------------------------------------------------- -quarkus.native.resources.includes = io/*,certs/* +quarkus.native.resources.includes = io/* diff --git a/integration-tests/lumberjack/src/test/java/org/apache/camel/quarkus/component/lumberjack/it/LumberjackClientUtil.java b/integration-tests/lumberjack/src/test/java/org/apache/camel/quarkus/component/lumberjack/it/LumberjackClientUtil.java index c93f48cad4..dd71435fd6 100644 --- a/integration-tests/lumberjack/src/test/java/org/apache/camel/quarkus/component/lumberjack/it/LumberjackClientUtil.java +++ b/integration-tests/lumberjack/src/test/java/org/apache/camel/quarkus/component/lumberjack/it/LumberjackClientUtil.java @@ -17,8 +17,10 @@ package org.apache.camel.quarkus.component.lumberjack.it; import java.io.ByteArrayOutputStream; +import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; @@ -145,8 +147,10 @@ public class LumberjackClientUtil { TrustManagersParameters trustManagersParameters = new TrustManagersParameters(); KeyStoreParameters trustStore = new CustomKeyStoreParameters(); trustStore.setPassword("changeit"); - trustStore.setResource("certs/lumberjack-keystore.jks"); + trustStore.setResource( + "target/certs/lumberjack-keystore.jks"); trustManagersParameters.setKeyStore(trustStore); + sslContextParameters.setTrustManagers(trustManagersParameters); return sslContextParameters; @@ -156,7 +160,7 @@ public class LumberjackClientUtil { @Override protected InputStream resolveResource(String resource) throws IOException { - return this.getClass().getClassLoader().getResourceAsStream(resource); + return new FileInputStream(Paths.get(resource).toFile()); } } } diff --git a/integration-tests/mail/src/test/java/org/apache/camel/quarkus/component/mail/MailTestResource.java b/integration-tests/mail/src/test/java/org/apache/camel/quarkus/component/mail/MailTestResource.java index d65a80f999..0269f7ab87 100644 --- a/integration-tests/mail/src/test/java/org/apache/camel/quarkus/component/mail/MailTestResource.java +++ b/integration-tests/mail/src/test/java/org/apache/camel/quarkus/component/mail/MailTestResource.java @@ -23,6 +23,7 @@ import java.util.HashMap; import java.util.Map; import io.quarkus.test.common.QuarkusTestResourceLifecycleManager; +import org.apache.camel.quarkus.test.support.certificate.CertificatesUtil; import org.eclipse.microprofile.config.ConfigProvider; import org.jboss.logging.Logger; import org.testcontainers.containers.GenericContainer; @@ -41,7 +42,7 @@ public class MailTestResource implements QuarkusTestResourceLifecycleManager { @Override public Map<String, String> start() { container = new GenericContainer<>(GREENMAIL_IMAGE_NAME) - .withCopyToContainer(MountableFile.forClasspathResource("certs/greenmail-keystore.p12"), + .withCopyToContainer(MountableFile.forHostPath(CertificatesUtil.keystoreFile("greenmail", "p12")), "/home/greenmail/greenmail.p12") .withExposedPorts(MailProtocol.allPorts()) .waitingFor(new HttpWaitStrategy() diff --git a/integration-tests/nats/src/main/java/org/apache/camel/quarkus/component/nats/it/NatsRoutes.java b/integration-tests/nats/src/main/java/org/apache/camel/quarkus/component/nats/it/NatsRoutes.java index 4e4a0fd120..1a9cc3a8ef 100644 --- a/integration-tests/nats/src/main/java/org/apache/camel/quarkus/component/nats/it/NatsRoutes.java +++ b/integration-tests/nats/src/main/java/org/apache/camel/quarkus/component/nats/it/NatsRoutes.java @@ -72,7 +72,7 @@ public class NatsRoutes extends RouteBuilder { KeyManagersParameters keyManagersParameters = new KeyManagersParameters(); KeyStoreParameters keyStore = new KeyStoreParameters(); keyStore.setPassword("password"); - keyStore.setResource("certs/nats-keystore.p12"); + keyStore.setResource("file:target/certs/nats-keystore.p12"); keyManagersParameters.setKeyPassword("password"); keyManagersParameters.setKeyStore(keyStore); sslContextParameters.setKeyManagers(keyManagersParameters); @@ -80,7 +80,7 @@ public class NatsRoutes extends RouteBuilder { TrustManagersParameters trustManagersParameters = new TrustManagersParameters(); KeyStoreParameters trustStore = new KeyStoreParameters(); trustStore.setPassword("password"); - trustStore.setResource("certs/nats-truststore.p12"); + trustStore.setResource("file:target/certs/nats-truststore.p12"); trustManagersParameters.setKeyStore(trustStore); sslContextParameters.setTrustManagers(trustManagersParameters); diff --git a/integration-tests/nats/src/test/java/org/apache/camel/quarkus/component/nats/it/NatsTestResource.java b/integration-tests/nats/src/test/java/org/apache/camel/quarkus/component/nats/it/NatsTestResource.java index 179dfccc31..1ed282c437 100644 --- a/integration-tests/nats/src/test/java/org/apache/camel/quarkus/component/nats/it/NatsTestResource.java +++ b/integration-tests/nats/src/test/java/org/apache/camel/quarkus/component/nats/it/NatsTestResource.java @@ -20,6 +20,7 @@ import java.util.HashMap; import java.util.Map; import io.quarkus.test.common.QuarkusTestResourceLifecycleManager; +import org.apache.camel.quarkus.test.support.certificate.CertificatesUtil; import org.eclipse.microprofile.config.ConfigProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -28,6 +29,7 @@ import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.SelinuxContext; import org.testcontainers.containers.output.Slf4jLogConsumer; import org.testcontainers.containers.wait.strategy.Wait; +import org.testcontainers.utility.MountableFile; import org.testcontainers.utility.TestcontainersConfiguration; import static org.apache.camel.quarkus.component.nats.it.NatsConfiguration.NATS_BROKER_URL_BASIC_AUTH_CONFIG_KEY; @@ -134,11 +136,9 @@ public class NatsTestResource implements QuarkusTestResourceLifecycleManager { GenericContainer<?> container = new GenericContainer<>(NATS_IMAGE) .withExposedPorts(NATS_SERVER_PORT) .withNetworkAliases("tlsAuthContainer") - .withClasspathResourceMapping("certs/nats-ca.crt", "/certs/nats-ca.crt", BindMode.READ_ONLY, - SelinuxContext.SHARED) - .withClasspathResourceMapping("certs/nats.key", "/certs/nats.key", BindMode.READ_ONLY, SelinuxContext.SHARED) - .withClasspathResourceMapping("certs/nats.crt", "/certs/nats.crt", BindMode.READ_ONLY, - SelinuxContext.SHARED) + .withCopyToContainer(MountableFile.forHostPath(CertificatesUtil.caCrt("nats")), "/certs/nats-ca.crt") + .withCopyToContainer(MountableFile.forHostPath(CertificatesUtil.key("nats")), "/certs/nats.key") + .withCopyToContainer(MountableFile.forHostPath(CertificatesUtil.crt("nats")), "/certs/nats.crt") .withClasspathResourceMapping("conf/tls.conf", "/conf/tls.conf", BindMode.READ_ONLY, SelinuxContext.SHARED) .withCommand( "--config", "/conf/tls.conf", diff --git a/integration-tests/netty/src/main/java/org/apache/camel/quarkus/component/netty/NettyProducers.java b/integration-tests/netty/src/main/java/org/apache/camel/quarkus/component/netty/NettyProducers.java index 2e37f92d36..63b8e9b2bd 100644 --- a/integration-tests/netty/src/main/java/org/apache/camel/quarkus/component/netty/NettyProducers.java +++ b/integration-tests/netty/src/main/java/org/apache/camel/quarkus/component/netty/NettyProducers.java @@ -130,11 +130,11 @@ public class NettyProducers { @ConfigProperty(name = "keystore.type") Optional<String> keystoreType, @ConfigProperty(name = "keystore.provider") Optional<String> keystoreProvider) { KeyStoreParameters keystoreParameters = new KeyStoreParameters(); - keystoreParameters.setResource("certs/netty-keystore.p12"); + keystoreParameters.setResource("file:target/certs/netty-keystore.p12"); keystoreParameters.setPassword("changeit"); KeyStoreParameters truststoreParameters = new KeyStoreParameters(); - truststoreParameters.setResource("certs/netty-truststore.p12"); + truststoreParameters.setResource("file:target/certs/netty-truststore.p12"); truststoreParameters.setPassword("changeit"); TrustManagersParameters trustManagersParameters = new TrustManagersParameters(); diff --git a/integration-tests/netty/src/main/resources/application.properties b/integration-tests/netty/src/main/resources/application.properties index 1e2bcc156b..365ad28f8b 100644 --- a/integration-tests/netty/src/main/resources/application.properties +++ b/integration-tests/netty/src/main/resources/application.properties @@ -14,6 +14,5 @@ ## See the License for the specific language governing permissions and ## limitations under the License. ## --------------------------------------------------------------------------- -quarkus.native.resources.includes = certs/* -truststore.file=/certs/netty-truststore.p12 -keystore.file=/certs/netty-keystore.p12 +truststore.file=target/certs/netty-truststore.p12 +keystore.file=target/certs/netty-keystore.p12 diff --git a/integration-tests/oaipmh/src/test/java/org/apache/camel/quarkus/component/oaipmh/it/MockOaipmhServer.java b/integration-tests/oaipmh/src/test/java/org/apache/camel/quarkus/component/oaipmh/it/MockOaipmhServer.java index 0e3ebaf795..9a36ce884a 100644 --- a/integration-tests/oaipmh/src/test/java/org/apache/camel/quarkus/component/oaipmh/it/MockOaipmhServer.java +++ b/integration-tests/oaipmh/src/test/java/org/apache/camel/quarkus/component/oaipmh/it/MockOaipmhServer.java @@ -33,6 +33,7 @@ import com.github.tomakehurst.wiremock.extension.ResponseDefinitionTransformer; import com.github.tomakehurst.wiremock.http.Request; import com.github.tomakehurst.wiremock.http.ResponseDefinition; import org.apache.camel.quarkus.test.AvailablePortFinder; +import org.apache.camel.quarkus.test.support.certificate.CertificatesUtil; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; @@ -91,8 +92,7 @@ public final class MockOaipmhServer { WireMockConfiguration config = wireMockConfig().extensions(transformer); config.httpsPort(httpsPort); - String keyStorePath = MockOaipmhServer.class.getResource("/certs/oaipmh-keystore.p12").toExternalForm(); - config.keystorePath(keyStorePath); + config.keystorePath(CertificatesUtil.keystoreFile("oaipmh", "p12")); config.keystorePassword(PASSWORD); config.keyManagerPassword(PASSWORD); diff --git a/integration-tests/paho-mqtt5/src/main/java/org/apache/camel/quarkus/component/paho/mqtt5/it/PahoMqtt5Resource.java b/integration-tests/paho-mqtt5/src/main/java/org/apache/camel/quarkus/component/paho/mqtt5/it/PahoMqtt5Resource.java index f6df2cc43b..a19aa8021e 100644 --- a/integration-tests/paho-mqtt5/src/main/java/org/apache/camel/quarkus/component/paho/mqtt5/it/PahoMqtt5Resource.java +++ b/integration-tests/paho-mqtt5/src/main/java/org/apache/camel/quarkus/component/paho/mqtt5/it/PahoMqtt5Resource.java @@ -17,6 +17,7 @@ package org.apache.camel.quarkus.component.paho.mqtt5.it; import java.io.File; +import java.io.FileInputStream; import java.io.InputStream; import java.net.URI; import java.nio.file.Files; @@ -68,7 +69,7 @@ public class PahoMqtt5Resource { @Inject ConsumerTemplate consumerTemplate; - private final String keystore = "certs/paho-mqtt5-keystore.p12"; + private final String keystore = "target/certs/paho-mqtt5-keystore.p12"; public final static String KEYSTORE_PASSWORD = "quarkus"; @Path("/{protocol}/{queueName}") @@ -209,7 +210,7 @@ public class PahoMqtt5Resource { private String setKeyStore(String keystore) { String tmpKeystore = null; - try (InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(keystore);) { + try (InputStream in = new FileInputStream(Paths.get(keystore).toFile())) { tmpKeystore = File.createTempFile("keystore-", ".jks").getPath(); Files.copy(in, Paths.get(tmpKeystore), StandardCopyOption.REPLACE_EXISTING); } catch (Exception e) { diff --git a/integration-tests/paho-mqtt5/src/test/java/org/apache/camel/quarkus/component/paho/mqtt5/it/PahoMqtt5TestResource.java b/integration-tests/paho-mqtt5/src/test/java/org/apache/camel/quarkus/component/paho/mqtt5/it/PahoMqtt5TestResource.java index 602502c37b..ccf69f919e 100644 --- a/integration-tests/paho-mqtt5/src/test/java/org/apache/camel/quarkus/component/paho/mqtt5/it/PahoMqtt5TestResource.java +++ b/integration-tests/paho-mqtt5/src/test/java/org/apache/camel/quarkus/component/paho/mqtt5/it/PahoMqtt5TestResource.java @@ -22,6 +22,7 @@ import java.util.Map; import com.github.dockerjava.api.model.Ulimit; import io.quarkus.test.common.QuarkusTestResourceLifecycleManager; import org.apache.camel.quarkus.test.AvailablePortFinder; +import org.apache.camel.quarkus.test.support.certificate.CertificatesUtil; import org.apache.camel.util.CollectionHelper; import org.eclipse.microprofile.config.ConfigProvider; import org.slf4j.Logger; @@ -31,6 +32,7 @@ import org.testcontainers.containers.FixedHostPortGenericContainer; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.output.Slf4jLogConsumer; import org.testcontainers.containers.wait.strategy.Wait; +import org.testcontainers.utility.MountableFile; import org.testcontainers.utility.TestcontainersConfiguration; public class PahoMqtt5TestResource implements QuarkusTestResourceLifecycleManager { @@ -84,12 +86,12 @@ public class PahoMqtt5TestResource implements QuarkusTestResourceLifecycleManage .withExposedPorts(TCP_PORT, WS_PORT, SSL_PORT) .withClasspathResourceMapping("mosquitto.conf", "/mosquitto/config/mosquitto.conf", BindMode.READ_ONLY) .withClasspathResourceMapping("password.conf", "/etc/mosquitto/password", BindMode.READ_ONLY) - .withClasspathResourceMapping("certs/paho-mqtt5-ca.crt", "/etc/mosquitto/certs/paho-mqtt5-ca.crt", - BindMode.READ_ONLY) - .withClasspathResourceMapping("certs/paho-mqtt5.crt", "/etc/mosquitto/certs/paho-mqtt5.crt", - BindMode.READ_ONLY) - .withClasspathResourceMapping("certs/paho-mqtt5.key", "/etc/mosquitto/certs/paho-mqtt5.key", - BindMode.READ_ONLY); + .withCopyToContainer(MountableFile.forHostPath(CertificatesUtil.caCrt("paho-mqtt5")), + "/etc/mosquitto/certs/paho-mqtt5-ca.crt") + .withCopyToContainer(MountableFile.forHostPath(CertificatesUtil.crt("paho-mqtt5")), + "/etc/mosquitto/certs/paho-mqtt5.crt") + .withCopyToContainer(MountableFile.forHostPath(CertificatesUtil.key("paho-mqtt5")), + "/etc/mosquitto/certs/paho-mqtt5.key"); } container.withLogConsumer(new Slf4jLogConsumer(LOGGER)) diff --git a/integration-tests/paho/src/main/java/org/apache/camel/quarkus/component/paho/PahoResource.java b/integration-tests/paho/src/main/java/org/apache/camel/quarkus/component/paho/PahoResource.java index 9c0efbf7f9..0837f1d5a6 100644 --- a/integration-tests/paho/src/main/java/org/apache/camel/quarkus/component/paho/PahoResource.java +++ b/integration-tests/paho/src/main/java/org/apache/camel/quarkus/component/paho/PahoResource.java @@ -16,9 +16,12 @@ */ package org.apache.camel.quarkus.component.paho; +import java.io.FileInputStream; +import java.io.IOException; import java.io.InputStream; import java.net.URI; import java.nio.file.Files; +import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import javax.net.ssl.HostnameVerifier; @@ -57,7 +60,7 @@ public class PahoResource { @Inject ConsumerTemplate consumerTemplate; - private static final String KEYSTORE_FILE = "certs/paho-keystore.p12"; + private static final String KEYSTORE_FILE = "target/certs/paho-keystore.p12"; public static final String KEYSTORE_PASSWORD = "quarkus"; @Path("/{protocol}/{queueName}") @@ -175,11 +178,11 @@ public class PahoResource { private java.nio.file.Path copyKeyStore() { java.nio.file.Path tmpKeystore = null; - try (InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(KEYSTORE_FILE);) { + try (InputStream in = new FileInputStream(Paths.get(KEYSTORE_FILE).toFile())) { tmpKeystore = Files.createTempFile("keystore-", ".p12"); Files.copy(in, tmpKeystore, StandardCopyOption.REPLACE_EXISTING); return tmpKeystore; - } catch (Exception e) { + } catch (IOException e) { throw new RuntimeException("Could not copy " + KEYSTORE_FILE + " from the classpath to " + tmpKeystore, e); } } diff --git a/integration-tests/paho/src/test/java/org/apache/camel/quarkus/component/paho/it/PahoTestResource.java b/integration-tests/paho/src/test/java/org/apache/camel/quarkus/component/paho/it/PahoTestResource.java index 5019578c08..906cc4916c 100644 --- a/integration-tests/paho/src/test/java/org/apache/camel/quarkus/component/paho/it/PahoTestResource.java +++ b/integration-tests/paho/src/test/java/org/apache/camel/quarkus/component/paho/it/PahoTestResource.java @@ -20,6 +20,7 @@ import java.util.HashMap; import java.util.Map; import io.quarkus.test.common.QuarkusTestResourceLifecycleManager; +import org.apache.camel.quarkus.test.support.certificate.CertificatesUtil; import org.apache.camel.util.CollectionHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,6 +28,7 @@ import org.testcontainers.containers.BindMode; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.output.Slf4jLogConsumer; import org.testcontainers.containers.wait.strategy.Wait; +import org.testcontainers.utility.MountableFile; import org.testcontainers.utility.TestcontainersConfiguration; public class PahoTestResource implements QuarkusTestResourceLifecycleManager { @@ -51,9 +53,12 @@ public class PahoTestResource implements QuarkusTestResourceLifecycleManager { container = new GenericContainer<>(IMAGE).withExposedPorts(TCP_PORT, WS_PORT, SSL_PORT) .withClasspathResourceMapping("mosquitto.conf", "/mosquitto/config/mosquitto.conf", BindMode.READ_ONLY) .withClasspathResourceMapping("password.conf", "/etc/mosquitto/password", BindMode.READ_ONLY) - .withClasspathResourceMapping("certs/paho-ca.crt", "/etc/mosquitto/certs/paho-ca.crt", BindMode.READ_ONLY) - .withClasspathResourceMapping("certs/paho.crt", "/etc/mosquitto/certs/paho.crt", BindMode.READ_ONLY) - .withClasspathResourceMapping("certs/paho.key", "/etc/mosquitto/certs/paho.key", BindMode.READ_ONLY); + .withCopyToContainer(MountableFile.forHostPath(CertificatesUtil.caCrt("paho")), + "/etc/mosquitto/certs/paho-ca.crt") + .withCopyToContainer(MountableFile.forHostPath(CertificatesUtil.crt("paho")), + "/etc/mosquitto/certs/paho.crt") + .withCopyToContainer(MountableFile.forHostPath(CertificatesUtil.key("paho")), + "/etc/mosquitto/certs/paho.key"); container.withLogConsumer(new Slf4jLogConsumer(LOGGER)) .waitingFor(Wait.forLogMessage(".* mosquitto version .* running", 1)).waitingFor(Wait.forListeningPort()); diff --git a/integration-tests/platform-http-proxy-ssl/src/main/java/org/apache/camel/quarkus/component/platform/http/proxy/ssl/it/Routes.java b/integration-tests/platform-http-proxy-ssl/src/main/java/org/apache/camel/quarkus/component/platform/http/proxy/ssl/it/Routes.java index 1af4f020a7..67984cf1e0 100644 --- a/integration-tests/platform-http-proxy-ssl/src/main/java/org/apache/camel/quarkus/component/platform/http/proxy/ssl/it/Routes.java +++ b/integration-tests/platform-http-proxy-ssl/src/main/java/org/apache/camel/quarkus/component/platform/http/proxy/ssl/it/Routes.java @@ -44,13 +44,13 @@ public class Routes extends RouteBuilder { KeyManagersParameters keyManagersParameters = new KeyManagersParameters(); KeyStoreParameters keyStore = new KeyStoreParameters(); keyStore.setPassword("changeit"); - keyStore.setResource("certs/proxy-ssl-keystore.p12"); + keyStore.setResource("file:target/certs/proxy-ssl-keystore.p12"); keyManagersParameters.setKeyPassword("changeit"); keyManagersParameters.setKeyStore(keyStore); sslContextParameters.setKeyManagers(keyManagersParameters); KeyStoreParameters truststoreParameters = new KeyStoreParameters(); - truststoreParameters.setResource("certs/proxy-ssl-keystore.p12"); + truststoreParameters.setResource("file:target/certs/proxy-ssl-keystore.p12"); truststoreParameters.setPassword("changeit"); TrustManagersParameters trustManagersParameters = new TrustManagersParameters(); diff --git a/integration-tests/platform-http-proxy-ssl/src/main/resources/application.properties b/integration-tests/platform-http-proxy-ssl/src/main/resources/application.properties deleted file mode 100644 index d71d52239c..0000000000 --- a/integration-tests/platform-http-proxy-ssl/src/main/resources/application.properties +++ /dev/null @@ -1,19 +0,0 @@ -## --------------------------------------------------------------------------- -## Licensed to the Apache Software Foundation (ASF) under one or more -## contributor license agreements. See the NOTICE file distributed with -## this work for additional information regarding copyright ownership. -## The ASF licenses this file to You under the Apache License, Version 2.0 -## (the "License"); you may not use this file except in compliance with -## the License. You may obtain a copy of the License at -## -## http://www.apache.org/licenses/LICENSE-2.0 -## -## Unless required by applicable law or agreed to in writing, software -## distributed under the License is distributed on an "AS IS" BASIS, -## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -## See the License for the specific language governing permissions and -## limitations under the License. -## --------------------------------------------------------------------------- - - -quarkus.native.resources.includes=certs/proxy-ssl-keystore.p12 \ No newline at end of file diff --git a/integration-tests/platform-http-proxy-ssl/src/test/java/org.apache.camel.quarkus.component.platform.http.proxy.ssl.it/PlatformHttpSSLTestResource.java b/integration-tests/platform-http-proxy-ssl/src/test/java/org.apache.camel.quarkus.component.platform.http.proxy.ssl.it/PlatformHttpSSLTestResource.java index 1430e3e553..831244fbea 100644 --- a/integration-tests/platform-http-proxy-ssl/src/test/java/org.apache.camel.quarkus.component.platform.http.proxy.ssl.it/PlatformHttpSSLTestResource.java +++ b/integration-tests/platform-http-proxy-ssl/src/test/java/org.apache.camel.quarkus.component.platform.http.proxy.ssl.it/PlatformHttpSSLTestResource.java @@ -50,7 +50,7 @@ public class PlatformHttpSSLTestResource extends WireMockTestResourceLifecycleMa // add an SSL port config.dynamicHttpsPort(); // Either a path to a file or a resource on the classpath - config.keystorePath("certs/proxy-ssl-keystore.p12"); + config.keystorePath("target/certs/proxy-ssl-keystore.p12"); // The password used to access the keystore. Defaults to "password" if omitted config.keystorePassword("changeit"); // The password used to access individual keys in the keystore. Defaults to "password" if omitted diff --git a/integration-tests/platform-http/src/main/resources/application.properties b/integration-tests/platform-http/src/main/resources/application.properties index 77e7fdcaa6..3c5b5cc8b9 100644 --- a/integration-tests/platform-http/src/main/resources/application.properties +++ b/integration-tests/platform-http/src/main/resources/application.properties @@ -18,8 +18,8 @@ # Quarkus # quarkus.http.body.uploads-directory=target/uploads -quarkus.http.ssl.certificate.files=certs/platform-http.crt -quarkus.http.ssl.certificate.key-files=certs/platform-http.key +quarkus.http.ssl.certificate.files=target/certs/platform-http.crt +quarkus.http.ssl.certificate.key-files=target/certs/platform-http.key quarkus.http.insecure-requests=disabled quarkus.http.auth.basic=true quarkus.http.auth.permission.default.paths=/platform-http/secure/basic @@ -32,4 +32,4 @@ quarkus.security.users.embedded.roles.camel=Admin # Required by the encoding() test quarkus.native.add-all-charsets = true -quarkus.native.resources.includes = certs/*.crt,certs/*.key +quarkus.native.resources.includes = target/certs/*.crt,target/certs/*.key diff --git a/integration-tests/platform-http/src/test/java/org/apache/camel/quarkus/component/http/server/it/PlatformHttpTest.java b/integration-tests/platform-http/src/test/java/org/apache/camel/quarkus/component/http/server/it/PlatformHttpTest.java index 8e0bc4ce44..b770825606 100644 --- a/integration-tests/platform-http/src/test/java/org/apache/camel/quarkus/component/http/server/it/PlatformHttpTest.java +++ b/integration-tests/platform-http/src/test/java/org/apache/camel/quarkus/component/http/server/it/PlatformHttpTest.java @@ -46,7 +46,7 @@ class PlatformHttpTest { @BeforeAll public static void beforeAll() { - RestAssured.trustStore("certs/platform-http-truststore.p12", "changeit"); + RestAssured.trustStore("target/certs/platform-http-truststore.p12", "changeit"); } @Test diff --git a/integration-tests/vertx-websocket/src/main/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketResource.java b/integration-tests/vertx-websocket/src/main/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketResource.java index 6ed424a619..3d6c676c12 100644 --- a/integration-tests/vertx-websocket/src/main/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketResource.java +++ b/integration-tests/vertx-websocket/src/main/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketResource.java @@ -141,7 +141,7 @@ public class VertxWebsocketResource { @Named public SSLContextParameters clientSSLContextParameters() { KeyStoreParameters truststoreParameters = new KeyStoreParameters(); - truststoreParameters.setResource("/certs/vertx-websocket-truststore.p12"); + truststoreParameters.setResource("file:target/certs/vertx-websocket-truststore.p12"); truststoreParameters.setPassword("changeit"); TrustManagersParameters trustManagersParameters = new TrustManagersParameters(); diff --git a/integration-tests/vertx-websocket/src/main/resources/application.properties b/integration-tests/vertx-websocket/src/main/resources/application.properties index 98bf8c5422..71f447461c 100644 --- a/integration-tests/vertx-websocket/src/main/resources/application.properties +++ b/integration-tests/vertx-websocket/src/main/resources/application.properties @@ -15,4 +15,4 @@ ## limitations under the License. ## --------------------------------------------------------------------------- -quarkus.native.resources.includes = certs/*.key,certs/*.crt +quarkus.native.resources.includes = target/certs/*.key,target/certs/*.crt diff --git a/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketClientSslProvider.java b/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketClientSslProvider.java index cdfc1994e9..e39f924a5f 100644 --- a/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketClientSslProvider.java +++ b/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketClientSslProvider.java @@ -16,8 +16,10 @@ */ package org.apache.camel.quarkus.component.vertx.websocket.it; +import java.io.FileInputStream; import java.io.InputStream; import java.net.URI; +import java.nio.file.Paths; import java.security.KeyStore; import javax.net.ssl.SSLContext; @@ -32,11 +34,14 @@ import jakarta.websocket.Endpoint; * Enable the Quarkus WebSocket client to handle self-signed certificates. */ public class VertxWebsocketClientSslProvider implements WebsocketClientSslProvider { - private static final SSLContext SSL_CONTEXT; - static { - try (InputStream stream = VertxWebsocketClientSslProvider.class - .getResourceAsStream("/certs/vertx-websocket-truststore.p12")) { + private static SSLContext SSL_CONTEXT; + + static SSLContext getSslContext() { + if (SSL_CONTEXT != null) { + return SSL_CONTEXT; + } + try (InputStream stream = new FileInputStream(Paths.get("target/certs/vertx-websocket-truststore.p12").toFile())) { KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); keystore.load(stream, "changeit".toCharArray()); @@ -46,23 +51,27 @@ public class VertxWebsocketClientSslProvider implements WebsocketClientSslProvid SSL_CONTEXT = SSLContext.getInstance("TLS"); SSL_CONTEXT.init(null, trustManagerFactory.getTrustManagers(), null); + } catch (java.io.FileNotFoundException notFound) { + //ignore } catch (Exception e) { throw new RuntimeException(e); } + + return SSL_CONTEXT; } @Override public SSLContext getSsl(EventLoopGroup worker, Class<?> annotatedEndpoint, URI uri) { - return SSL_CONTEXT; + return getSslContext(); } @Override public SSLContext getSsl(EventLoopGroup worker, Object annotatedEndpointInstance, URI uri) { - return SSL_CONTEXT; + return getSslContext(); } @Override public SSLContext getSsl(EventLoopGroup worker, Endpoint endpoint, ClientEndpointConfig cec, URI uri) { - return SSL_CONTEXT; + return getSslContext(); } } diff --git a/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketSslTest.java b/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketSslTest.java index 2053c2aba7..895702349f 100644 --- a/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketSslTest.java +++ b/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketSslTest.java @@ -42,7 +42,7 @@ public class VertxWebsocketSslTest { @BeforeAll public static void beforeAll() { - RestAssured.trustStore("certs/vertx-websocket-truststore.p12", "changeit"); + RestAssured.trustStore("target/certs/vertx-websocket-truststore.p12", "changeit"); } @Test diff --git a/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketSslTestProfile.java b/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketSslTestProfile.java index ed7e2dbabc..14664213c3 100644 --- a/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketSslTestProfile.java +++ b/integration-tests/vertx-websocket/src/test/java/org/apache/camel/quarkus/component/vertx/websocket/it/VertxWebsocketSslTestProfile.java @@ -25,8 +25,8 @@ public class VertxWebsocketSslTestProfile implements QuarkusTestProfile { @Override public Map<String, String> getConfigOverrides() { return Map.of( - "quarkus.http.ssl.certificate.files", "certs/vertx-websocket.crt", - "quarkus.http.ssl.certificate.key-files", "certs/vertx-websocket.key", + "quarkus.http.ssl.certificate.files", "target/certs/vertx-websocket.crt", + "quarkus.http.ssl.certificate.key-files", "target/certs/vertx-websocket.key", "quarkus.http.insecure-requests", "disabled"); } }
