我开发了一个使用 x509 保护的 spring SOAP Web 服务,如 x-509-spring-rest-web-service-tutorial 中所述(我为 SOAP WS 改编了它)。它工作正常。我可以通过浏览器(获取 WSDL 或检查健康状况)或 SOAP UI(发出请求)与服务通信。它的 SOAP UI 配置很棘手。
然后我根据 spring-soap-client-tutorial 实现了一个 spring 客户端来与服务器通信.它有效。
现在我正在尝试促进与 x509 的安全通信。我坚持构建。要构建我使用这个命令
清理编译\
-Djavax.net.ssl.trustStore=src/main/resources/truststore.jks\
-Djavax.net.ssl.trustStoreType=JKS\
-Djavax.net.ssl.trustStorePassword=密码
我得到异常
引起:javax.net.ssl.SSLHandshakeException:收到致命警报:bad_certificate
我想我的信任库不正确。我把带有签名服务器证书的 ca 放在那里。它应该包含什么?我还做错了什么?
最佳答案
您想要稳定、可重复的构建,所以不要编译在线资源。
制作在线资源的本地副本并使用 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
来调试它。
关于ssl - x509 spring 客户端,证书错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40430579/