查看SSLCertificateSocketFactory文档,我无法看到如何使用该工厂来获取此类实例。
我的意思是使用构造函数is deprecated。推荐的getDefault()
只返回SocketFactory
或SSLSocketFactory
...
但是没有方法可以返回 SSLCertificateSocketFactory 。
我猜一个用户可以使用SSLSocketFactory - 但我有兴趣使用SSLCertificateSocketFactory功能,例如setTrustManagers()
,例如可选择使用服务器证书的指纹进行验证。
因此我的问题。
答案 0 :(得分:1)
不可否认,我不确定SSLCertificateSocketFactory的用途是什么,因为正如您所提到的,工厂并不完全符合人们的期望。当然,你可以指明你的方式,但为什么要这样做呢。
转到SSLContext.getInstance(“TLS”) - 或者,如果你只针对API 9及更高版本,请使用getDefault() - 并使用SSLContext.init()设置TrustManagers,就像其他人一样。< / p>
答案 1 :(得分:0)
答案 2 :(得分:0)
参考matheszabi建议的链接
protected org.apache.http.conn.ssl.SSLSocketFactory createAdditionalCertsSSLSocketFactory() {
try {
final KeyStore ks = KeyStore.getInstance("BKS");
// the bks file we generated above
final InputStream in = context.getResources().openRawResource( R.raw.mystore);
try {
// don't forget to put the password used above in strings.xml/mystore_password
ks.load(in, context.getString( R.string.mystore_password ).toCharArray());
} finally {
in.close();
}
return new AdditionalKeyStoresSSLSocketFactory(ks);
} catch( Exception e ) {
throw new RuntimeException(e);
}
}