我正在尝试通过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,但无法理解问题所在。
有什么想法吗?
答案 0 :(得分:2)
trustStore.load(new FileInputStream(keystoreFile), "mypass".toCharArray());
您似乎让您的密钥库和您的信任库感到困惑。密钥库包含您的私钥和证书。信任库包含其他人的证书。