javax.net.ssl.SSLHandshakeException:javax.net.ssl.SSLProtocolException:SSLhandshaketerminated:

时间:2015-08-26 10:07:16

标签: ssl-certificate keystore sslexception

我的客户提供的p12文件和cer文件。

我使用下面的代码来连接服务器,但总是有SSSLHandshakeException:

KeyStore trustStore = KeyStore.getInstance("BKS");
            trustStore.load(R.raw.trustore), 
                    password.toCharArray());
            SSLSocketFactory sf = new MySSLSocketFactory(trustStore);
            HttpParams params = new BasicHttpParams();
            HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
            HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);
            SchemeRegistry registry = new SchemeRegistry();
            registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
            registry.register(new Scheme("https", sf, 443));
            ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);
            DefaultHttpClient defaultHttpClient=new DefaultHttpClient(ccm, params);

请注意,我使用以下cmd转换了trustore(.bks文件):

keytool -genseckey -alias alias_name -keystore truststore.bks -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath bcprov-jdk15on-149.jar -storetype BKS

1 个答案:

答案 0 :(得分:0)

使用正确的BKS文件解决了这个问题。我从这个问题中了解到,尽管尝试所有可能的解决方案并且心胸开阔,但不要试图单方面解决问题。如果我们还有.p12和.cer文件,即使我还不知道如何验证正确的BKS文件。但您必须是正确的密钥库文件才能成功连接。以下是我用于转换BKS文件的命令:

keytool -importkeystore -srckeystore xyz.p12 -srcstoretype BKS -destkeystore new-store.bks -deststore type BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath bcprov-jdk15on-149.jar