You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by zh...@apache.org on 2024/08/20 00:39:33 UTC

(camel-quarkus) branch 3.8.x updated (f9280fea75 -> be45a5b769)

This is an automated email from the ASF dual-hosted git repository.

zhfeng pushed a change to branch 3.8.x
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git


    from f9280fea75 Fix MockBackendUtils native mode config resolution of CAMEL_QUARKUS_START_MOCK_BACKEND
     new ed4680643e Use certificate-generator for gRPC integration tests
     new be45a5b769 Changed default location of generated certificates to target/certs + change of configuration of ssl

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../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 +--
 integration-tests/grpc/README.adoc                 | 38 ----------------------
 integration-tests/grpc/pom.xml                     |  5 +++
 .../camel/quarkus/component/grpc/it/GrpcRoute.java | 12 ++++---
 .../grpc/src/main/resources/application.properties |  2 +-
 .../grpc/src/main/resources/certs/ca-openssl.conf  | 18 ----------
 .../grpc/src/main/resources/certs/ca.key           | 27 ---------------
 .../grpc/src/main/resources/certs/ca.pem           | 20 ------------
 .../grpc/src/main/resources/certs/client.key       | 28 ----------------
 .../grpc/src/main/resources/certs/client.pem       | 20 ------------
 .../grpc/src/main/resources/certs/server.key       | 28 ----------------
 .../grpc/src/main/resources/certs/server.pem       | 20 ------------
 .../camel/quarkus/component/grpc/it/GrpcTest.java  | 15 ++++++---
 .../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 +--
 41 files changed, 131 insertions(+), 290 deletions(-)
 delete mode 100644 integration-tests/grpc/README.adoc
 delete mode 100644 integration-tests/grpc/src/main/resources/certs/ca-openssl.conf
 delete mode 100644 integration-tests/grpc/src/main/resources/certs/ca.key
 delete mode 100644 integration-tests/grpc/src/main/resources/certs/ca.pem
 delete mode 100644 integration-tests/grpc/src/main/resources/certs/client.key
 delete mode 100644 integration-tests/grpc/src/main/resources/certs/client.pem
 delete mode 100644 integration-tests/grpc/src/main/resources/certs/server.key
 delete mode 100644 integration-tests/grpc/src/main/resources/certs/server.pem
 delete mode 100644 integration-tests/platform-http-proxy-ssl/src/main/resources/application.properties


(camel-quarkus) 01/02: Use certificate-generator for gRPC integration tests

Posted by zh...@apache.org.
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 ed4680643e1f5bae09fd82de3298a854c959702f
Author: James Netherton <ja...@gmail.com>
AuthorDate: Fri Jun 7 14:06:27 2024 +0100

    Use certificate-generator for gRPC integration tests
---
 integration-tests/grpc/README.adoc                 | 38 ----------------------
 integration-tests/grpc/pom.xml                     |  5 +++
 .../camel/quarkus/component/grpc/it/GrpcRoute.java | 12 ++++---
 .../grpc/src/main/resources/certs/ca-openssl.conf  | 18 ----------
 .../grpc/src/main/resources/certs/ca.key           | 27 ---------------
 .../grpc/src/main/resources/certs/ca.pem           | 20 ------------
 .../grpc/src/main/resources/certs/client.key       | 28 ----------------
 .../grpc/src/main/resources/certs/client.pem       | 20 ------------
 .../grpc/src/main/resources/certs/server.key       | 28 ----------------
 .../grpc/src/main/resources/certs/server.pem       | 20 ------------
 .../camel/quarkus/component/grpc/it/GrpcTest.java  | 15 ++++++---
 11 files changed, 22 insertions(+), 209 deletions(-)

diff --git a/integration-tests/grpc/README.adoc b/integration-tests/grpc/README.adoc
deleted file mode 100644
index aed6f155b0..0000000000
--- a/integration-tests/grpc/README.adoc
+++ /dev/null
@@ -1,38 +0,0 @@
-# gRPC test client & server certificate generation
-
-The certificates used by the client / server for the security integration tests can be generated from within the src/main/resources/certs directory as follows.
-
-Create the certificate authority.
-
-[source,shell]
-----
-openssl genrsa -out ca.key 2048
-openssl req -x509 -new -key ca.key -nodes -out ca.pem -days 3650 -config ca-openssl.conf -extensions v3_req
-----
-
-Create the client certificate. When prompted for the 'common name' use localhost as the value. It's safe to accept the defaults for the other options.
-
-[source,shell]
-----
-openssl genrsa -out client.key.rsa 2048
-openssl pkcs8 -topk8 -in client.key.rsa -out client.key -nocrypt
-openssl req -new -key client.key -out client.csr
-openssl x509 -req -in client.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out client.pem -outform PEM -days 5000
-----
-
-Create the server certificate. When prompted for the 'common name' use localhost as the value. It's safe to accept the defaults for the other options.
-
-[source,shell]
-----
-openssl genrsa -out server.key.rsa 2048
-openssl pkcs8 -topk8 -in server.key.rsa -out server.key -nocrypt
-openssl req -new -key server.key -out server.csr
-openssl x509 -req -in server.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out server.pem -outform PEM -days 5000
-----
-
-Clean up.
-
-[source,shell]
-----
-rm -f *.rsa *.csr *.srl
-----
diff --git a/integration-tests/grpc/pom.xml b/integration-tests/grpc/pom.xml
index 13dde20028..c9feff6c14 100644
--- a/integration-tests/grpc/pom.xml
+++ b/integration-tests/grpc/pom.xml
@@ -59,6 +59,11 @@
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-integration-tests-support-grpc</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-integration-tests-support-certificate-generator</artifactId>
+            <scope>test</scope>
+        </dependency>
 
         <!-- test dependencies -->
         <dependency>
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 179654c9f7..234b761109 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/server.key&authenticationType=GOOGLE&serviceAccountResource=keys/app.json&KeyCertChainResource=certs/server.pem",
+                .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",
                         PING_PONG_SERVICE);
 
         // Streaming producer strategy
@@ -111,8 +111,9 @@ public class GrpcRoute extends RouteBuilder {
         // TLS secured consumer
         fromF("grpc://localhost:{{camel.grpc.test.tls.server.port}}"
                 + "/%s?consumerStrategy=PROPAGATION&"
-                + "negotiationType=TLS&keyCertChainResource=certs/server.pem&"
-                + "keyResource=certs/server.key&trustCertCollectionResource=certs/ca.pem", PING_PONG_SERVICE)
+                + "negotiationType=TLS&keyCertChainResource=file:target/certs/grpc.crt&"
+                + "keyResource=file:target/certs/grpc.key&trustCertCollectionResource=file:target/certs/grpc-ca.crt",
+                PING_PONG_SERVICE)
                 .process("messageOriginProcessor")
                 .choice()
                 .when(simple("${header.origin} == 'producer'"))
@@ -126,8 +127,9 @@ public class GrpcRoute extends RouteBuilder {
         from("direct:sendTls")
                 .toF("grpc://localhost:{{camel.grpc.test.tls.server.port}}"
                         + "/%s?method=pingSyncSync&synchronous=true&"
-                        + "negotiationType=TLS&keyCertChainResource=certs/client.pem&"
-                        + "keyResource=certs/client.key&trustCertCollectionResource=certs/ca.pem", PING_PONG_SERVICE);
+                        + "negotiationType=TLS&keyCertChainResource=file:target/certs/grpc.crt&"
+                        + "keyResource=file:target/certs/grpc.key&trustCertCollectionResource=file:target/certs/grpc-ca.crt",
+                        PING_PONG_SERVICE);
 
         // JWT secured consumer
         fromF("grpc://localhost:{{camel.grpc.test.jwt.server.port}}"
diff --git a/integration-tests/grpc/src/main/resources/certs/ca-openssl.conf b/integration-tests/grpc/src/main/resources/certs/ca-openssl.conf
deleted file mode 100644
index c8622b8dfd..0000000000
--- a/integration-tests/grpc/src/main/resources/certs/ca-openssl.conf
+++ /dev/null
@@ -1,18 +0,0 @@
-[req]
-distinguished_name  = req_distinguished_name
-req_extensions = v3_req
-
-[req_distinguished_name]
-countryName           = Country Name (2 letter code)
-countryName_default = US
-stateOrProvinceName   = State or Province Name (full name)
-stateOrProvinceName_default = Test State
-organizationName          = Organization Name (eg, company)
-organizationName_default = Apache Camel Quarkus
-commonName            = Common Name (eg, YOUR name)
-commonName_default = localhost
-
-[v3_req]
-basicConstraints = CA:true
-keyUsage = critical, keyCertSign
-
diff --git a/integration-tests/grpc/src/main/resources/certs/ca.key b/integration-tests/grpc/src/main/resources/certs/ca.key
deleted file mode 100644
index 785a1b0386..0000000000
--- a/integration-tests/grpc/src/main/resources/certs/ca.key
+++ /dev/null
@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEowIBAAKCAQEAya7tcM/2bJDin4fROIzX77T3NzNWDk9A8Y7F3OxKqdB15/aB
-Z8FshmVR7pcVW6IbVX7l069RVbsnfIic1HHqB5t/c5B6ACwD3X3fyL5VhlTCTRGX
-QPElVNBnu/8hMP1DXXQfrh6k8pZ5mpOSLRKZfkwxVfQR6tIX5uwAafnOXjVuViIv
-mf0EKWggI/xtFHId3okNg/tEQCfeqAviGl5PZO6MQWlsGeyjT7n4WJfOXyyWu2cP
-ssaJifUUvtiCIQ/diUW5GN6qAKK1CnfAd/Ad5gtPpQtpVqheKLGY+ZRIoDe4MmL0
-J/fkukVadUooTfxdJU1u38mYlUE5/6DUYpsqPwIDAQABAoIBACy63jBh/y5O5+Qn
-1DAtlIq2YQneGdzsmOO6HYoE4f5NnIjItCSV0oLwH77BxVvgVR2eGkzbmjdgXb6R
-8e5wIU50n0y7I0O8f1L1Ytd71y4GyF0dZKVjljr8SbV5PRxHX1Rvt8L/Suf+lZPB
-3O6gLGjFbz+39O1WkTSG7QSUAcAExtxovMloc/qC/Jp0M/ZTonasmbC5WkvHGgCK
-UKgFTYLJUmGDfj5Bk0i+ZI4gPElbGrEvMmw1l9BP3HLS1FFZiVC81m57S7RDaQQe
-w34PHQT5g9tVInjuHSUR/Y0zTyRMcara3e1aF8HBBLAVf+ViMLFH4mjmFbuAxgwE
-Yz9JINECgYEA45F/ZPFfj+nbE8nNnumMO9U5cLydK9LU7BCQjx3m0ygAXJIO3H2j
-FlRg09DRE2F5HBiXuE6mFzTjzFRwoSH4Iqy0V4ifUiiqIAoImneY0QxjEBYf8Mgl
-O+PM4WHfTU5hAbnUHDU0fN0MQz52S/f2h12uIs8AA5Mim60yURhduckCgYEA4uGH
-GeC5ihsuctmmKLR1vzFudp/BhL4bNRp6psOCFCnJ1K7qaGi8/f8kAAKcVFoFD16r
-Ivx+W133tqipYLzoKf4eCGcOZPAHJI2agAFREF3muS0m70hQwqWRIlbuF/J5NTBR
-rboV3cQX/RxDrw5R9KV/EkhCMzZik3VrnqXxR8cCgYB2+iL4y5mCzGlVtzRh2QkQ
-XzJg1rv1pYzcvuxVZvS/gTJvM43BiY4ypnrZQ1uMHnILVnA8VCJSD7zpn1wjYncw
-6cp/2VYyxj/r8FL/L3geE7PXPToF0R5maXs8esccy9W76UQUW1zNy2QV5BpFLace
-rsPUPxVqyQpXCf48l9iowQKBgQDNrxQh+795WwcTDAo9IM0WliPE2zQ/uXFFBUpo
-YRpOWUwmyqSsHzgnNOVYNQWw2yN3OaYAw9Nx1ZC7QdC8aMY5O63ShEtiatCu7MlC
-fu8U3WxMOIjxqSe+LweSkCiuAR6tf66sxuUH9byhtLwPufXGyzqWQnfxob5gXLVC
-UMKbBQKBgEjiPBAhclkub+OJwYZ8+079Z3aQ31ZfVnIffNS/3y2FJvBM2Y0CmtNA
-9YTuSyHO1mchcUG1bbmsc6ylvbMJ0PcoDAswQ6fURbmjvBNRcs5D9mW1ThrR2yV+
-Sg+1KqT3SM27nj1aQs0YsN7JoZT6FcAHQvzfB6KK7+lGxkwMBkGi
------END RSA PRIVATE KEY-----
diff --git a/integration-tests/grpc/src/main/resources/certs/ca.pem b/integration-tests/grpc/src/main/resources/certs/ca.pem
deleted file mode 100644
index 15efcf301f..0000000000
--- a/integration-tests/grpc/src/main/resources/certs/ca.pem
+++ /dev/null
@@ -1,20 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDWjCCAkKgAwIBAgIUI3OU/rpsBhWj1cwW9kVAc1YnTuQwDQYJKoZIhvcNAQEL
-BQAwVjELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM
-GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEPMA0GA1UEAwwGdGVzdGNhMB4XDTIw
-MDYwOTExNTQ0MloXDTMwMDYwNzExNTQ0MlowVjELMAkGA1UEBhMCQVUxEzARBgNV
-BAgMClNvbWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0
-ZDEPMA0GA1UEAwwGdGVzdGNhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
-AQEAya7tcM/2bJDin4fROIzX77T3NzNWDk9A8Y7F3OxKqdB15/aBZ8FshmVR7pcV
-W6IbVX7l069RVbsnfIic1HHqB5t/c5B6ACwD3X3fyL5VhlTCTRGXQPElVNBnu/8h
-MP1DXXQfrh6k8pZ5mpOSLRKZfkwxVfQR6tIX5uwAafnOXjVuViIvmf0EKWggI/xt
-FHId3okNg/tEQCfeqAviGl5PZO6MQWlsGeyjT7n4WJfOXyyWu2cPssaJifUUvtiC
-IQ/diUW5GN6qAKK1CnfAd/Ad5gtPpQtpVqheKLGY+ZRIoDe4MmL0J/fkukVadUoo
-TfxdJU1u38mYlUE5/6DUYpsqPwIDAQABoyAwHjAMBgNVHRMEBTADAQH/MA4GA1Ud
-DwEB/wQEAwICBDANBgkqhkiG9w0BAQsFAAOCAQEAF71GOXN1C7bd7kQdnLC87uQ+
-cF9REcrGb9kCF8YTRNDXTAIWAYRE4b8gGEPstOjOC/Kr4q4R0NqzYoXvWCnxUfV0
-ZyD+wlZTPNzkFRyJlIYFqwYJIoUvB/Qs/nbPINd4W4YSzeTdHuP98FR8nfEITQ36
-TZq2zTSwZSb0i14LRxe7uZjvZlK0rqiH2ELj3hSa40aq3g6b6cmZfZzILIATIg79
-iF47/kmPudi9/CvkU6GZ89suKkBDwOmqULLVqPL607M3UFTQs5qmyv9Ybr0pd6M2
-vs2KaYSobjToBwSDZ6dImp3+fQnjbNTi6VR+tfVEifGvVcq925Be6Z1u8KE8qg==
------END CERTIFICATE-----
diff --git a/integration-tests/grpc/src/main/resources/certs/client.key b/integration-tests/grpc/src/main/resources/certs/client.key
deleted file mode 100644
index 860491e01c..0000000000
--- a/integration-tests/grpc/src/main/resources/certs/client.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDOt2D2q5xddLk9
-h7pFk2qcg2ySFgqzI3oGbWwncWoGY3LizXAwPJr96ZhWwoVDvhwWONoSs53eWTCr
-gLn12teacgk0ZuTuEzaThAePcLfnpT9QQiYXjyjpApJGnYOy48n3hJeYKknZqQuu
-EI/Z5+bIQKNd8XPznWGDCuuxmdtNsdneXbLrOInIu67gEVQnORGw2k5wwKA7lgYI
-1+848FxDTlTU31kWLDE3VZJIHAGbv8UaLP+/49cgJ2G5QHF28Gm9Jd08AZkXGEp4
-wMx7FvRjgeq6Hb3kZ6hKQUbVUejQBXRy3+Gqb3fFQsfEYKItrHPNKFddmzdof1IN
-i3pzjzwfAgMBAAECggEAUZrzHG4C/KHnvvKmBnF71O3NHp60+qM2uPLZj3imcn8w
-C3kuoNxME5D0IswH8AZM8DjhXiCqYeyz2gCnaPdLxhzepWE5XwMWuIWWtnm5ICmM
-JRL4FrTdYZ8yP85O/4ANazlc3yVSoiqqAb1oDI4P/V4HID8Bl1q59BGLmkEy4ihu
-RD4oHP5Vq1QVeAaYSdG4jLDvsLXO3ikQMCo4dTZfbfOzWFnjLQRwDwQoYmn2YSWn
-3Wt7sNbbCJd1OGnAVcdrZRrdM/672e2AbzenLWIKD8rlq5AMYri47j6UbbQjsMi4
-7xDiiSuj6nc5xkcqgc2wHO5jWLvwHA/0uFv9qFgWAQKBgQDpO2ly7wHtOgGmclVW
-Fh3/X1MzrE2xeSMyxqHzdJIQUlVP7kN7GCHN/7huwCVEaAOGuT8gW6R1zA/6Xz22
-G2g6hXQZM3DSMMntZRQeBrVU3CRMAQWx5K7Kp46bBNjbV3TVdUVk2vZlaK3z7iWt
-/z1N0xNvkFOJbxyGgZpArWPw7wKBgQDi5VMeT73J5i4ScPCNBhUwuzCy5QIOYkVn
-gtwhxNrYzSlzmqTG98p0waAS17uZeHwJJ0Sy8M8D7Sj/p5i7C6m8eLN8Apbz7zzY
-mOXt4+d8hbvD3SJCRkgHNEasAmqhxB44Kk9t1D2SsnAOR+Sprug+GC1Inzdxk222
-F2nN6q8H0QKBgQC1eDSj6LNnESsXhv4+7RaKDHGAUyBgZhCtAUAhXSII8QbQGmMG
-88/ZqI6oHXjhsMyNlrU3SBa+UPhdpp0thEWkwxGCSjQOV0fGHk94zV9pl5/mQyVb
-NMOLirO6ihrxDysoqwZDYts0LC6tDS7kIyRf2UvWEkXtOTbIsS6EBGUuoQKBgQC4
-iJR6QZZ0v11XKD2sJHdVg9jOlkx+0FPsJNTOLiFjVDDTUcGUBPHG1bdPu99aqVAP
-zb0k348ufVLr4i3oakro+y3WvPBygm91JZ1TRhj+AHI+kPoM9sYb/dtAiFKbMDr3
-qQmipIxTZAaYxsXlb1h5MAacWsmn+KSxBQfLLoSeEQKBgQDhR3O7P5LED/07lP4X
-eLAQR5TU+AjZBy74cKpvOQvo4VkhDQcLgf15yZOQEMqOTvuy46b1x6KNSRg4VlZH
-cBBLH/NlivWLnsM7Te9j2Rg0ZTGUPtoCU5q3dDw6AYG2TtEkDis2LvYc05khuGuS
-CdmyEemWogUiW2EYmFwJqV47Cg==
------END PRIVATE KEY-----
diff --git a/integration-tests/grpc/src/main/resources/certs/client.pem b/integration-tests/grpc/src/main/resources/certs/client.pem
deleted file mode 100644
index f92b3b59ee..0000000000
--- a/integration-tests/grpc/src/main/resources/certs/client.pem
+++ /dev/null
@@ -1,20 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDMzCCAhsCFFJOv4SHojw+aduKtxbjvmuqhXbsMA0GCSqGSIb3DQEBCwUAMFYx
-CzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRl
-cm5ldCBXaWRnaXRzIFB0eSBMdGQxDzANBgNVBAMMBnRlc3RjYTAeFw0yMDA2MDkx
-MTU1MzNaFw0zNDAyMTYxMTU1MzNaMFYxCzAJBgNVBAYTAlhYMRUwEwYDVQQHDAxE
-ZWZhdWx0IENpdHkxHDAaBgNVBAoME0RlZmF1bHQgQ29tcGFueSBMdGQxEjAQBgNV
-BAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM63
-YParnF10uT2HukWTapyDbJIWCrMjegZtbCdxagZjcuLNcDA8mv3pmFbChUO+HBY4
-2hKznd5ZMKuAufXa15pyCTRm5O4TNpOEB49wt+elP1BCJhePKOkCkkadg7LjyfeE
-l5gqSdmpC64Qj9nn5shAo13xc/OdYYMK67GZ202x2d5dsus4ici7ruARVCc5EbDa
-TnDAoDuWBgjX7zjwXENOVNTfWRYsMTdVkkgcAZu/xRos/7/j1yAnYblAcXbwab0l
-3TwBmRcYSnjAzHsW9GOB6rodveRnqEpBRtVR6NAFdHLf4apvd8VCx8Rgoi2sc80o
-V12bN2h/Ug2LenOPPB8CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEASorfZ3g4jLJY
-jYaGh2Lyg1dDiOGnCBgkJzO/lJ4t2qrXwf0OX3GepTHedO1Y4C00ca/XKGB8Qluh
-ylhJYrfG1O+fwm+CYHrg+sz2yRtnlHAdySCqa3DkD5RHy9CNIe7s2RGNpcz0gvrr
-byrqGB6u8AATvzVxO+Hx36Mttx89e1pcKoNmAJHAjueceJKmNgBFi+qZqEITrLeQ
-Q6sj4YzYEe9eVtTDqiZS2Tl5D/l/3YwRiWWyB3AxOINVnRMHdKM5qrUuVtX0hhIb
-YjMuUo/vOaimX9kqhphvDzE34hJCn2DQpEJUESUVBiXg8N6gUYjOH46Q8krAj48P
-yDTqHnU4yw==
------END CERTIFICATE-----
diff --git a/integration-tests/grpc/src/main/resources/certs/server.key b/integration-tests/grpc/src/main/resources/certs/server.key
deleted file mode 100644
index 9f1c04abfe..0000000000
--- a/integration-tests/grpc/src/main/resources/certs/server.key
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCUrRCRuN5YYTVG
-XfYEb3JpSsi4ToEERMPsmfRxlljv0L8w6XbvWOk45kCLdk362SUNARdWv+mzgkuJ
-W9eIYxSUQSspkNcnpyhV6078i7ZPY7BERlNny5SZ1eg0ptEoB4Xuw6o1Hko5sjco
-xGGrxYPWaMmz0kLg6EmHgqsiCozXO1p/TpeltLUd0XFp/qE+NsxcjiuPosr0xioY
-F6QLrTeK7b+bR0VbyWQ0RVTZDta+mN9rfLmyN832h5zDaF6VMsHUdpj7ik6ehBhs
-DoLNMOR/zk1q34dx/AwQsrcBhlVFs/8NU3/QnYCgmGsZpld6+o6xZGpLqcxRTHM2
-aeKtwosdAgMBAAECggEAB8iTsH1ULp5QMrHimlLXU4nVvkhl2rpa430f3f54A34T
-NFVUo60s8IylXmfAJ1zM4sRm22TKsFom6DcFrp85SZWr085AZVQL+YuLJA+QaNGY
-PcrMvQdcbT1UncUJ+CWErn5R39wJGMIqvxig4GRDxarQvHhKhgnDJ7QAj5Sr0Oy3
-H57uTq718CitiF9BjSrRgLyg4ycmg+Li7hY+wyCJiLnyDdL7jdlGE5KGsTenrqEe
-/NvhgLqNic5WAyfH6NNCfkN7mCMps9BkMjHS4WGNLj/MEdas8h1sWmSJUtBLNbIL
-/S+5eUzClUI7KECm3s123dgWAdCXaEkQSZaKpRjyhQKBgQDEkCpGDZAcqMR7rJBz
-LikBb5ppc79a33ees69VwKcfvbgrCfbVnDz8fMhC0w4ZOXd7tICZX3wGdzymHVs5
-qlBrD96wvWjbNusH11jsT5mHtEsOpzZ1CYCYt+HVkvN54RFRxJ2FjdeQJywnCWc+
-iy1yeEOma0T2wccjxN63zxDq5wKBgQDBofy0QzZhwaIPs6v3Q7vRE73XKpWj7+U0
-GJY0X9GXEratusv4AXH/V/Aa6+/PexJ+zRSSlgfwqEPjgsZBmT52lshEfmQq4bvV
-hIRDNM+BOKyhzdOxRs3KD9oUSty5ElE43ntuW61APC3Id4a3rlcFcWPtvgbg/Fjf
-UzBFPEo9WwKBgQCSipQpk9T7uMp7FWS/qgtCGcz5jyR7ABzzASzXdoBiBpP16kDO
-ceN5rSGzyBs7rP8qB6DUNz6Ep4JcqYgoTpQTrUotY5h3zdKdDuwpiRKB/GT0sK7F
-xGbN9FD2Y88G70d1OWridaPewYWGONly5FnmfEibGl/YwxDO1ufgCwymwwKBgEW+
-B5wR3WOGb83CBD1ySxK6TpVSREWg4WhLNsa0gHQujFe0wUSZmKrEzLmVo3GSvY2o
-ZjGKEmAO6yzl7GyyOnpSQt3QvFlpptL4AP+H5PmBJUS+MvJWM0cFQKIweKG8RD78
-e267XIKXalIbIw3DoJpYRgrad/XPTl9ZwjgdyAujAoGAN+qEIOXVvq7Lnx050tZB
-TBDponVg5eVGfdduSx5nHUZhVIPH5oz5r+srFURgGutk8CTvfa2Tz8nS/uux5Df0
-Dp04OEDbuOS1BWerMKfOgZa1VMLnCbupAEjr9i+Oc8gmPlxLvypOoTQcZz6qXSo3
-Dp2ABZftNsNA5q1z4f/JW1M=
------END PRIVATE KEY-----
diff --git a/integration-tests/grpc/src/main/resources/certs/server.pem b/integration-tests/grpc/src/main/resources/certs/server.pem
deleted file mode 100644
index c1a1c07d19..0000000000
--- a/integration-tests/grpc/src/main/resources/certs/server.pem
+++ /dev/null
@@ -1,20 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDMzCCAhsCFFJOv4SHojw+aduKtxbjvmuqhXbtMA0GCSqGSIb3DQEBCwUAMFYx
-CzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRl
-cm5ldCBXaWRnaXRzIFB0eSBMdGQxDzANBgNVBAMMBnRlc3RjYTAeFw0yMDA2MDkx
-MTU2MDlaFw0zNDAyMTYxMTU2MDlaMFYxCzAJBgNVBAYTAlhYMRUwEwYDVQQHDAxE
-ZWZhdWx0IENpdHkxHDAaBgNVBAoME0RlZmF1bHQgQ29tcGFueSBMdGQxEjAQBgNV
-BAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJSt
-EJG43lhhNUZd9gRvcmlKyLhOgQREw+yZ9HGWWO/QvzDpdu9Y6TjmQIt2TfrZJQ0B
-F1a/6bOCS4lb14hjFJRBKymQ1yenKFXrTvyLtk9jsERGU2fLlJnV6DSm0SgHhe7D
-qjUeSjmyNyjEYavFg9ZoybPSQuDoSYeCqyIKjNc7Wn9Ol6W0tR3RcWn+oT42zFyO
-K4+iyvTGKhgXpAutN4rtv5tHRVvJZDRFVNkO1r6Y32t8ubI3zfaHnMNoXpUywdR2
-mPuKTp6EGGwOgs0w5H/OTWrfh3H8DBCytwGGVUWz/w1Tf9CdgKCYaxmmV3r6jrFk
-akupzFFMczZp4q3Cix0CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAd4YnMK+556fT
-hRXtAtCU48tWkWkSEg4jV4fmp9vlm+Lo+Qa8A6X2S1wGpZrMtJVHdbbw4oLVq9NC
-AcFiVBXajMGFn181UnWqUTZCfzBNlYfJiZ0JF0ITzZEdoLv6nZlY9aQRCunEvx0J
-Bp9NVD8sErlr/7oJ2ni+uRrjmAvSnvhMimh+0jt3Chpb0Hy3/YDBLA0nbUW4aI/T
-6gPFuK+VTVtMyOt05a4ZbV/EsJIRjudiK3CcDsrmtsfPWPHDIQ7ZzJLzQgqC8HMp
-h1+gZKv35lCTHZsyZubHS7CEr2I0pIEZcDh9eTVRaiFOuPNxXsDxm5bZnDRllxvF
-m/4+pqqpfQ==
------END CERTIFICATE-----
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 fdae550b34..fd7f1a2fb6 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
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.quarkus.component.grpc.it;
 
+import java.io.FileInputStream;
 import java.util.Iterator;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
@@ -32,6 +33,8 @@ import io.quarkus.test.common.QuarkusTestResource;
 import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
 import io.restassured.path.json.JsonPath;
+import me.escoffier.certs.Format;
+import me.escoffier.certs.junit5.Certificate;
 import org.apache.camel.component.grpc.auth.jwt.JwtAlgorithm;
 import org.apache.camel.component.grpc.auth.jwt.JwtCallCredentials;
 import org.apache.camel.component.grpc.auth.jwt.JwtHelper;
@@ -40,6 +43,7 @@ import org.apache.camel.quarkus.component.grpc.it.model.PingPongGrpc.PingPongBlo
 import org.apache.camel.quarkus.component.grpc.it.model.PingPongGrpc.PingPongStub;
 import org.apache.camel.quarkus.component.grpc.it.model.PingRequest;
 import org.apache.camel.quarkus.component.grpc.it.model.PongResponse;
+import org.apache.camel.quarkus.test.support.certificate.TestCertificates;
 import org.apache.camel.util.StringHelper;
 import org.awaitility.Awaitility;
 import org.eclipse.microprofile.config.Config;
@@ -66,6 +70,9 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 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 {
@@ -256,15 +263,13 @@ class GrpcTest {
         Config config = ConfigProvider.getConfig();
         Integer port = config.getValue("camel.grpc.test.tls.server.port", Integer.class);
 
-        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
-
         ManagedChannel channel = null;
         try {
             channel = NettyChannelBuilder.forAddress("localhost", port)
                     .sslContext(GrpcSslContexts.forClient()
-                            .keyManager(classLoader.getResourceAsStream("certs/client.pem"),
-                                    classLoader.getResourceAsStream("certs/client.key"))
-                            .trustManager(classLoader.getResourceAsStream("certs/ca.pem"))
+                            .keyManager(new FileInputStream("target/certs/grpc.crt"),
+                                    new FileInputStream("target/certs/grpc.key"))
+                            .trustManager(new FileInputStream("target/certs/grpc-ca.crt"))
                             .build())
                     .build();
 


(camel-quarkus) 02/02: Changed default location of generated certificates to target/certs + change of configuration of ssl

Posted by zh...@apache.org.
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 <on...@gmail.com>
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");
     }
 }