我开发了一个使用x509保护的Spring SOAP Web服务,就像x-509-spring-rest-web-service-tutorial中描述的那样(我为SOAP WS调整了它)。它工作正常。我可以通过浏览器(获取WSDL或检查运行状况)或SOAP UI(发出请求)与服务进行通信。它的SOAP UI配置很棘手。
然后我根据spring-soap-client-tutorial实现了一个spring客户端与服务器通信。它有效。
现在我试图促进与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
我认为我的信任库是不正确的。我把ca与签名的服务器证书放在一起。它应该包含什么?我还能做些什么呢?
答案 0 :(得分: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
进行调试。