我有一个Java JAR应用程序,它连接到HTTPS后面的服务器上运行的Java Web服务。如果我使用Oracle Java 1.6运行JAR,则SSL握手成功。但是,如果我使用Oracle Java 1.7或更高版本运行它,我总是得到例外:Promise.all()
我已将证书导入sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
文件,并使用VM变量cacert
设置文件的路径。
我发现在不同的Java版本中jsse.jar存在差异。
此外,此应用程序在安装了IBM Java版本的Unix计算机上运行时效果如预期:javax.net.ssl.trustStore
并且,它与Widnows上的IBM JRE一起正常工作:
IBM J9 VM (build 2.7, JRE 1.7.0
我该怎么做才能解决这个问题?
答案 0 :(得分:0)
我解决了这个问题! Java在java.security
文件夹中有jre/lib/security
个文件,该文件具有属性keystore.type
。此属性设置为Windows-ROOT
,但我已在cacerts
文件中导入证书,并且该属性应设置为jks
,以便Java读取cacerts文件!