我遇到了以下问题:我使用Verisign SSL Cert并尝试从我的android应用程序连接到我的Tomcat7服务器。在我看来,证书是正确安装的,因为我可以成功地连接iphone,firefox浏览器和verisign的ssl工具和其他ssl检查工具的相同应用程序。
但安卓应用程序显示: java.security.cert.CertificateException:java.security.cert.CertPathValidatorException: Version 1 certs can't be used as intermediate certificates
我尝试按照许多答案中的描述对证书进行重新排序,并使用EasySSLSocketFactory和EasyX509TrustManager实现了解决方案,但我无法解决该异常。版本1证书是作为最后的证书订购的,所以我有[0]-my cert,[1]-intermediate1, [2]-intermediate2 and finally [3]-the root Version 1。出于安全原因,我不想允许所有证书。我不确定为什么会抛出这个异常,但似乎要么是verisign签发了错误的根证书,要么是android没有在其信任库中实现根证书。这个问题怎么解决呢?非常感谢您的帮助
发布于 2015-01-21 23:39:09
我遇到了这个问题,昨天我设法解决了它。您没有接受根证书,因为它是版本1证书,这一点是正确的。
我首先通过使用openssl找出证书链中的哪个证书是版本1证书(导致错误),从而解决了这个问题。
simonevertsson$ openssl s_client -connect my.secure.site.com:443这给出了证书链。示例:
---
Certificate chain
0 s:/C=SE/ST=Uppsala/L=Uppsala/O=Example AB/CN=my.secure.site.com
i:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at https://www.verisign.com/rpa (c)10/CN=VeriSign Class 3 Secure Server CA - G3
1 s:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at https://www.verisign.com/rpa (c)10/CN=VeriSign Class 3 Secure Server CA - G3
i:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5
2 s:/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=(c) 2006 VeriSign, Inc. - For authorized use only/CN=VeriSign Class 3 Public Primary Certification Authority - G5
i:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
3 s:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
i:/C=US/O=VeriSign, Inc./OU=Class 3 Public Primary Certification Authority
---然后,我转到VeriSign Root Certificate download page并手动下载了版本1证书的.pem文件,在我的示例中,该证书是3类公共主证书颁发机构。
当证书文件下载完成后,我只是在Adding unknown CAs上遵循了Android开发人员指南。就这样,错误消失了。
发布于 2013-07-10 17:31:57
请确保您仅在web/应用程序服务器上安装了一个证书。删除所有过期的证书。
https://stackoverflow.com/questions/9467932
复制相似问题