2014-11-20 41 views
1

我有一個SSL客戶端證書.pem文件。這個文件通過X509_load_cert_file()方法從我的C++客戶端加載時工作正常。現在如何在Android中調試SSLSession.IsValid失敗的原因?

,我嘗試使用下面的代碼加載這個文件:

InputStream caInput = ctx.getResources().openRawResource(R.raw.cacerts); 
    java.security.cert.Certificate ca; 
    try { 
     ca = cf.generateCertificate(caInput); 
    } finally { 
     caInput.close(); 
    } 
    ... 
    keyStore.setCertificateEntry("ca", ca); 

然而,generateCertificate所()拋出一個異常,輸入文件不具有的ASN.1序列標識符。

.pem文件包含一堆證書。我編輯了文件,刪除了開始的評論,並留下了第一個--- BEGIN CERTIFICATION ---/--- END CERTIFICATE ---對。有了這個改變,generateCertificate()不會給出任何錯誤。但是,我對SSLSession.IsValid()的後續調用返回false。

有人可以請建議我可能會錯過什麼?也許其餘的證書也需要加載到密鑰庫中。問候。

回答

0

是的,他們確實需要加載。您應該生成證書。你正在使用錯誤的API。

如果您詢問SSLSession.IsValid(),您應該展示一些調用它的代碼。

+0

謝謝你的幫助。您能否指點一下如何從多證書.pem文件加載證書鏈的示例? – Peter 2014-11-21 00:09:31

相關問題