在maven repo需要SSL身份验证时运行@QuarkusTest

在maven repo需要SSL身份验证时运行@QuarkusTest,maven,ssl,junit,quarkus,Maven,Ssl,Junit,Quarkus,我正在制作Quarkus.io的演示,我在连接到Maven repo公司时遇到了一个问题,因为该公司使用相互TLS进行身份验证 也就是说,当我从运行测试-针对入门测试时,我面临以下错误: [INFO] ------------------------------------------------------- [INFO] T E S T S [INFO] ------------------------------------------------------- [INFO] Runni

我正在制作Quarkus.io的演示,我在连接到Maven repo公司时遇到了一个问题,因为该公司使用相互TLS进行身份验证

也就是说,当我从运行
测试
-针对
入门测试
时,我面临以下错误:

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running org.acme.quickstart.GreetingResourceTest
[ERROR] Tests run: 2, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 3.139 s <<< FAILURE! - in org.acme.quickstart.GreetingResourceTest
[ERROR] testHelloEndpoint  Time elapsed: 0.012 s  <<< ERROR!
org.junit.jupiter.api.extension.TestInstantiationException: TestInstanceFactory [io.quarkus.test.junit.QuarkusTestExtension] failed to instantiate test class [org.acme.quickstart.GreetingResourceTest]: io.quarkus.bootstrap.resolver.AppModelResolverException: Failed to collect dependencies for io.quarkus:quarkus-resteasy-deployment:jar:1.2.0.Final
Caused by: io.quarkus.bootstrap.resolver.maven.DeploymentInjectionException: io.quarkus.bootstrap.resolver.AppModelResolverException: Failed to collect dependencies for io.quarkus:quarkus-resteasy-deployment:jar:1.2.0.Final
Caused by: io.quarkus.bootstrap.resolver.AppModelResolverException: Failed to collect dependencies for io.quarkus:quarkus-resteasy-deployment:jar:1.2.0.Final
Caused by: org.eclipse.aether.collection.DependencyCollectionException: Failed to collect dependencies at io.quarkus:quarkus-resteasy-server-common-deployment:jar:1.2.0.Final -> io.quarkus:quarkus-core-deployment:jar:1.2.0.Final -> io.quarkus:quarkus-bootstrap-core:jar:1.2.0.Final -> org.apache.maven.resolver:maven-resolver-transport-wagon:jar:1.1.1 -> org.apache.maven.wagon:wagon-provider-api:jar:3.3.3
Caused by: org.eclipse.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for org.apache.maven.wagon:wagon-provider-api:jar:3.3.3
Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: Could not transfer artifact org.apache.maven.wagon:wagon-provider-api:pom:3.3.3 from/to corporate-public (https://maven.corporate.net/content/repositories/corporate-public): Received fatal alert: handshake_failure
Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact org.apache.maven.wagon:wagon-provider-api:pom:3.3.3 from/to corporate-public (https://maven.corporate.net/content/repositories/corporate-public): Received fatal alert: handshake_failure
Caused by: org.apache.maven.wagon.TransferFailedException: Received fatal alert: handshake_failure
Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
[信息]-------------------------------------------------------
[信息]
[信息]-------------------------------------------------------
[信息]正在运行org.acme.quickstart.GreetingResourceTest
[错误]测试运行:2,失败:0,错误:2,跳过:0,运行时间:3.139 s org.apache.maven.wagen:wagen提供者api:jar:3.3
原因:org.eclipse.aether.resolution.ArtifactDescriptorException:无法读取org.apache.maven.wagen:wagen提供程序api:jar:3.3的工件描述符

原因:org.eclipse.aether.resolution.ArtifactResolutionException:无法将工件org.apache.maven.wagen:wagen提供程序api:pom:3.3从/传输到公司公共(https://maven.corporate.net/content/repositories/corporate-public):收到致命警报:握手失败
原因:org.eclipse.aether.transfer.ArtifactTransferException:无法将工件org.apache.maven.wagen:wagen提供程序api:pom:3.3从/传输到公司公共(https://maven.corporate.net/content/repositories/corporate-public):收到致命警报:握手失败
原因:org.apache.maven.wagen.TransferFailedException:收到致命警报:握手失败
原因:javax.net.ssl.SSLHandshakeException:收到致命警报:握手失败
-Djavax.net.ssl.keyStore*
属性通常由Maven从
~/.mavenrc
Maven_OPTS
环境属性中获取,但如何指定它们以运行Quarkus测试


这应该是显而易见的,但我无论如何都要声明——改用公共回购协议不是一个可接受的解决方案。

如果其他人有这个问题,一个解决办法是将
javax.net.ssl.*
系统属性传播到Maven Surefire插件,例如,将以下行添加到Surefire配置中:

<javax.net.ssl.keyStoreType>${javax.net.ssl.keyStoreType}</javax.net.ssl.keyStoreType>
<javax.net.ssl.keyStore>${javax.net.ssl.keyStore}</javax.net.ssl.keyStore>
<javax.net.ssl.keyStorePassword>${javax.net.ssl.keyStorePassword}</javax.net.ssl.keyStorePassword>
${javax.net.ssl.keyStoreType}
${javax.net.ssl.keyStore}
${javax.net.ssl.keystrepassword}

(此答案完全是对Quarkus GitHub repo中@tveon发行的信息的忍者攻击)。

“收到致命警报:握手失败”表示您的密钥库中没有所需的证书。请尝试将内部(公司)证书添加到密钥库。检查Hi@özkanpakdil-哪个密钥库?因此下载适用于Maven下载的依赖项。测试用例是否使用另一个密钥库?