2012-02-27 81 views
1

我有以下問題:我使用Verisign SSL Cert並嘗試從我的android應用程序連接到我的tomcat 7服務器。在我看來,證書安裝正確,因爲我可以成功地連接到iphone,firefox瀏覽器和verisign和其他ssl檢查工具的ssl工具。Android + Verisign SSL版本1

但Android應用說:java.security.cert.CertificateException:java.security.cert.CertPathValidatorException: Version 1 certs can't be used as intermediate certificates

我嘗試在許多答案中描述並實現與EasySSLSocketFactoryEasyX509TrustManager解決重新排序的證書,但我沒能解決異常。版本1證書作爲最後證書訂購,所以我有[0]-my cert,[1]-intermediate1, [2]-intermediate2 and finally [3]-the root Version 1。出於安全原因,我不想允許所有證書。我不知道爲什麼拋出這個異常,但似乎verisign發出了錯誤的根證書,或者android沒有在其信任庫中實現root。這怎麼能解決?非常感謝您的任何幫助

回答

0

請確保您只在網絡/應用程序服務器上安裝了一個證書。刪除所有過期的證書。

2

我有這個確切的問題,並設法解決它昨天。您無法接受根證書,因爲它是版本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並手動下載的.PEM文件的版本1證書,這在我的情況是,3類公用主證書頒發機構。

當證書文件被下載時,我只需按照Adding unknown CAs上的Android開發人員指南進行操作。就這樣,錯誤消失了。