SunCertPathBuilderException =>带证书的Maven JAXB2代

时间:2017-03-28 11:30:40

标签: java wsdl maven-3 jaxb2 jaxb2-maven-plugin

我使用maven-jaxb2生成类来调用Web服务。

<plugin>
    <groupId>org.jvnet.jaxb2.maven2</groupId>
    <artifactId>maven-jaxb2-plugin</artifactId>
    <version>0.12.3</version>
    <configuration>
        <schemaLanguage>WSDL</schemaLanguage>
        <schemas>
            <schema>
                <url>https://my-secured-webservice.com/file?wsdl</url>
            </schema>
        </schemas>
        <generateDirectory>src\main\java</generateDirectory>
        <verbose>true</verbose>
    </configuration>
    <executions>
        <execution>
            <phase>generate-sources</phase>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
</plugin>

wsdl需要一个在我的机器上正确安装的证书。我可以使用我的浏览器访问wsdl。

我已经使用properties-maven-plugin

添加了2个属性
<property>
    <name>javax.net.ssl.keyStore</name>
    <value>/path/to/JKS/file.jks</value>
</property>
<property>
    <name>javax.net.ssl.keyStorePassword</name>
    <value>my-super-secret-password</value>
</property>

我已经通过以下方式创建了我的jks文件:

keytool -importkeystore -deststorepass my-super-secret-password -destkeystore /path/to/JKS/file.jks -srckeystore /path/to/file.p12 -srcstoretype PKCS12

当我触发mvn:generate-sources时,我弹出了以下错误:

com.sun.istack.SAXParseException2; IOException thrown when processing "https://my-secured-webservice.com/file?wsdl". Exception: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target.

我做错了什么?

1 个答案:

答案 0 :(得分:1)

对不起..我自己解决了这个问题:

我从de wsdl位置挑选了证书。 (我已使用chrome下载.crt文件)

然后:

sudo keytool -importcert -file /path/to/downloaded/certificate.crt -alias myalias -keystore $JAVA_HOME/jre/lib/security/cacerts

所以我将证书导入我的cacerts ..