From cf4eee1bdef0a5327b1a1a9fcae92c9e414b97d6 Mon Sep 17 00:00:00 2001 From: Georgios Andrianakis Date: Wed, 10 Jun 2020 17:35:53 +0300 Subject: [PATCH] Add test to make sure that trustStore work in native mode --- .../generate-trust-store-for-self-signed.sh | 10 ++++ integration-tests/rest-client/pom.xml | 6 ++- integration-tests/rest-client/self-signed | Bin 0 -> 1194 bytes .../ExternalSelfSignedResource.java | 45 ++++++++++++++++++ .../selfsigned/ExternalSelfSignedITCase.java | 8 ++++ .../ExternalSelfSignedTestCase.java | 23 +++++++++ 6 files changed, 91 insertions(+), 1 deletion(-) create mode 100755 integration-tests/rest-client/generate-trust-store-for-self-signed.sh create mode 100644 integration-tests/rest-client/self-signed create mode 100644 integration-tests/rest-client/src/main/java/io/quarkus/it/rest/client/selfsigned/ExternalSelfSignedResource.java create mode 100644 integration-tests/rest-client/src/test/java/io/quarkus/it/rest/client/selfsigned/ExternalSelfSignedITCase.java create mode 100644 integration-tests/rest-client/src/test/java/io/quarkus/it/rest/client/selfsigned/ExternalSelfSignedTestCase.java diff --git a/integration-tests/rest-client/generate-trust-store-for-self-signed.sh b/integration-tests/rest-client/generate-trust-store-for-self-signed.sh new file mode 100755 index 00000000000000..a15a1994a39023 --- /dev/null +++ b/integration-tests/rest-client/generate-trust-store-for-self-signed.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +########################################################################################################################################## +# Script that generates the trustStore containing the self signed certificate used in 'io.quarkus.it.rest.client.selfsigned.ExternalSelfSignedResource' # +########################################################################################################################################## + + +echo -n | openssl s_client -connect self-signed.badssl.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > self-signed.cert +keytool -importcert -file self-signed.cert -alias self-signed -keystore self-signed -storepass changeit -noprompt +rm self-signed.cert diff --git a/integration-tests/rest-client/pom.xml b/integration-tests/rest-client/pom.xml index bf77e6b144705e..b271a14d68b0ee 100644 --- a/integration-tests/rest-client/pom.xml +++ b/integration-tests/rest-client/pom.xml @@ -70,6 +70,8 @@ en + ${project.basedir}/self-signed + changeit @@ -119,9 +121,11 @@ false true true + true false false ${graalvmHome} + -J-Djavax.net.ssl.trustStore=${project.basedir}/self-signed, -J-Djavax.net.ssl.trustStorePassword=changeit @@ -131,4 +135,4 @@ - \ No newline at end of file + diff --git a/integration-tests/rest-client/self-signed b/integration-tests/rest-client/self-signed new file mode 100644 index 0000000000000000000000000000000000000000..52feac47daf37dda0c68c044e9b5aa440f6abc96 GIT binary patch literal 1194 zcmV;b1XcSmf&``l0Ru3C1YZUTDuzgg_YDCD0ic2ePy~VmOfZ53NHBr~L^znQ!Suj+rm!5`!B#@{06|+(KQRgFn zgKt(M2^<>tAC0Z!<(UOl)#(JxTAu%CRhpV;HZRS|E6;D9zzAkUPIIUcxwQzrUo!YN zc>Z`}zF&h<+nFsH{v!p~>q-?-ao!Kr@SaNdT1e0VK-_Asp~C^WY8RbY{E#wegW4cJ z=nB5XtaDYKYo?$Xid0>O-19s~faKS&;Yq5qtNPPAXww(ceOUWp!uNZIDl(uw z>CF?IekcdxFMQ6$_cHM=OJZw29|)9N!ABGcMZC7M-@&l?BB$aVh|la>DEE9qqfjkdf}Ry-2+)Ql4ZU*R5JYp^aWtAhU6`M?;4gq zzk=DL7Pw2C@^VKQ+!LU<0inq%GEm7a-42^ZUxfb+oS^Kne&Cmi&LfT6l+n_J z>IZWpb|$NBTzdx@3Y9LQS(kbsgiKK`8+_krv3lX`OSD$i>|UEhuim>Dz$L&CO25UQ zG7mBid2<9%huYTEef;TO5?YfS6n%q4TS`2==Kq2c&56^Du)4{Dfo=<9xHtvWnqY?d&?mH!h!b-jeB=U1P&(z?TpvV%FeI@H~&Jni=6YDmzX64 z@)BxU8JuQW!bS2pmEEo1efk}HOFk&52x~B|!8PbQ5Rcpqe^u}3eTJkKt)BgTa>m|j zj-jTkPTa6S%)p&Xe_zsZ&0sHmQ152}uLW8d^f&q$46uFel+?1;BSYsLAuv8LAutIB z1uG5%0vZJX1Qe1L=7=H1H$5#%Ds1LspnJ}Xd9(x+BcHm_1QUxlaNFSLAxW+Dtxk`w I0s{etpe9^A!vFvP literal 0 HcmV?d00001 diff --git a/integration-tests/rest-client/src/main/java/io/quarkus/it/rest/client/selfsigned/ExternalSelfSignedResource.java b/integration-tests/rest-client/src/main/java/io/quarkus/it/rest/client/selfsigned/ExternalSelfSignedResource.java new file mode 100644 index 00000000000000..f62a6f7d674625 --- /dev/null +++ b/integration-tests/rest-client/src/main/java/io/quarkus/it/rest/client/selfsigned/ExternalSelfSignedResource.java @@ -0,0 +1,45 @@ +package io.quarkus.it.rest.client.selfsigned; + +import java.io.IOException; +import java.net.URL; + +import javax.net.ssl.HttpsURLConnection; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; + +/** + * This has nothing to do with rest-client, but we add it here in order to avoid creating + * a new integration test that would slow down our CI + */ +@Path("/self-signed") +public class ExternalSelfSignedResource { + + @GET + @Produces(MediaType.TEXT_PLAIN) + public String perform() throws IOException { + try { + return doGetCipher(); + } catch (IOException e) { + + // if it fails it might be because the remote service is down, so sleep and try again + try { + Thread.sleep(1000); + } catch (InterruptedException ignored) { + + } + + return doGetCipher(); + } + } + + private String doGetCipher() throws IOException { + // this URL provides an always on example of an HTTPS URL utilizing self-signed certificate + URL url = new URL("https://self-signed.badssl.com/"); + HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); + con.setRequestMethod("GET"); + con.getResponseCode(); + return con.getCipherSuite(); + } +} diff --git a/integration-tests/rest-client/src/test/java/io/quarkus/it/rest/client/selfsigned/ExternalSelfSignedITCase.java b/integration-tests/rest-client/src/test/java/io/quarkus/it/rest/client/selfsigned/ExternalSelfSignedITCase.java new file mode 100644 index 00000000000000..d7d20bcc28bc91 --- /dev/null +++ b/integration-tests/rest-client/src/test/java/io/quarkus/it/rest/client/selfsigned/ExternalSelfSignedITCase.java @@ -0,0 +1,8 @@ +package io.quarkus.it.rest.client.selfsigned; + +import io.quarkus.test.junit.NativeImageTest; + +@NativeImageTest +public class ExternalSelfSignedITCase extends ExternalSelfSignedTestCase { + +} diff --git a/integration-tests/rest-client/src/test/java/io/quarkus/it/rest/client/selfsigned/ExternalSelfSignedTestCase.java b/integration-tests/rest-client/src/test/java/io/quarkus/it/rest/client/selfsigned/ExternalSelfSignedTestCase.java new file mode 100644 index 00000000000000..7b2530e7d93bbc --- /dev/null +++ b/integration-tests/rest-client/src/test/java/io/quarkus/it/rest/client/selfsigned/ExternalSelfSignedTestCase.java @@ -0,0 +1,23 @@ +package io.quarkus.it.rest.client.selfsigned; + +import static org.hamcrest.Matchers.empty; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.not; + +import org.junit.jupiter.api.Test; + +import io.quarkus.test.junit.QuarkusTest; +import io.restassured.RestAssured; + +@QuarkusTest +public class ExternalSelfSignedTestCase { + + @Test + public void included() { + RestAssured.when() + .get("/self-signed") + .then() + .statusCode(200) + .body(is(not(empty()))); + } +}