具有自签名证书的HTTPS会产生握手错误

时间:2011-09-07 20:20:12

标签: android ssl https certificate

我正在尝试通过Android HttpClient使用自签名客户端和服务器证书连接到HTTPS Web服务器。证书和私钥都存储在PKCS#12密钥库中。

我正在使用this example加载密钥库的区别:

KeyStore trustStore = KeyStore.getInstance("PKCS12");
trustStore.load(new FileInputStream(keystoreFile), "mypass".toCharArray());

密钥库正确加载,因为我能够列出其中的所有证书。

但是,当执行GET请求时,我得到:

09-07 22:01:05.197: ERROR/TTT(3716): IOException: java.io.IOException: 
SSL handshake failure: Failure in SSL library, usually a protocol error
error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure 
(external/openssl/ssl/s3_pkt.c:1127 0x2e3b40:0x00000003)

我正在使用OS 2.3.4的Nexus S和OS 2.2的HTC Desire以及OS 2.1的仿真器上进行测试。它们都会产生相同的错误。我看了s3_pkt.c:1053,但无法理解问题所在。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

trustStore.load(new FileInputStream(keystoreFile), "mypass".toCharArray());

您似乎让您的密钥库和您的信任库感到困惑。密钥库包含您的私钥和证书。信任库包含其他人的证书。