最近在开发 Java 访问 Azure ServiceBus 时遇到SSL证书问题,导致JAVA报错,不能正常访问,报错信息如下:
javax.net.ssl.SSLException: Connection has been shutdown: 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
解决方法:配置要访问网站的域名证书,并导入的服务器jdk环境中
编译javac InstallCert.java
运行InstallCert,参数是你调用的网址(Azure事件中心的地址),如果是80端口可以省略port
java InstallCert [host]:[port]
例:java InstallCert abc.com:443
运行后会列出证书让你选择,输入1回车,最后会在当前目录生成一个jssecacerts文件。
1. 导出证书文件
1) 使用CMD命令进入jssecacerts文件所在目录
2) 运行以下命令,导出证书文件:
keytool -exportcert -alias [host]-1 -keystore jssecacerts -storepass changeit -file [host].cer
例:keytool -exportcert -alias