2016-11-04 131 views
0

我开发了一个使用x509进行安全保护的弹出式SOAP Web服务,就像它在x-509-spring-rest-web-service-tutorial(我适用于SOAP WS)中描述的那样。它工作正常。我可以通过浏览器与服务进行通信(获取WSDL或检查运行状况)或SOAP UI(发出请求)。 SOAP UI配置很棘手。x509弹簧客户端,错误证书

然后我实现了一个弹簧客户端来根据spring-soap-client-tutorial与服务器进行通信。有用。

现在我试图促进与x509的安全通信。我坚持构建。要构建我使用这个命令 clean compile \ -Djavax.net.ssl.trustStore=src/main/resources/truststore.jks \ -Djavax.net.ssl.trustStoreType=JKS \ -Djavax.net.ssl.trustStorePassword=password

我得到的异常 Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate

我想我的信任是不正确的。我在那里签署了服务器证书。它应该包含什么?我还能做什么错?

回答

1

你想稳定,可重复的构建,所以不要编译在线资源。
制作在线资源的本地副本,并使用catalog files重写绝对URL以指向本地副本。

将您的https://www.acme.com/foo/schema.xsd保存为src/main/resources/www.acme.com/foo/schema.xsd

写目录文件:

REWRITE_SYSTEM "https://www.acme.com" "www.acme.com" 

用它在你的身材:

<catalog>src/main/resources/catalog.cat</catalog> 
<schemas> 
    <schema> 
     <url>https://www.acme.com/foo/schema.xsd</url> 
    </schema> 
</schemas> 

我不认为SSL问题是值得这里战斗。但试试-Djavax.net.debug=all来调试它。

+0

我运行'mvn clean compile'并得到一个异常'无法执行目标org.jvnet.jaxb2.maven2:maven-jaxb2-plugin:0.13.1:在项目中生成(默认)myproject:无法解析配置mojo org.jvnet.jaxb2.maven2:maven-jaxb2-plugin:0.13.1:为参数模式生成:无法在'schema''的org.jvnet.jaxb2.maven2.ResourceEntry中找到setter,adder或field。我可能做错了什么? – user1648825

+0

一个'schema'元素被复制。现在更正。 – lexicore

+0

谢谢。有用。现在我在客户端启动时遇到了错误的证书异常。 – user1648825