javax.net.ssl.SSLHandshakeException:javax.net.ssl.SSLProtocolException:SSL 握手终止:
javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSLhandshaketerminated:
我有客户提供的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);
请注意,我使用以下命令转换了 trustore(.bks 文件):
keytool -genseckey -alias alias_name -keystore truststore.bks -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath bcprov-jdk15on-149.jar -storetype BKS
使用正确的 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
我有客户提供的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);
请注意,我使用以下命令转换了 trustore(.bks 文件):
keytool -genseckey -alias alias_name -keystore truststore.bks -providerclass org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath bcprov-jdk15on-149.jar -storetype BKS
使用正确的 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