SSLSocketFactoryjava 中的类在使用时扮演什么角色HttpsURLConnection?java文档没有多大帮助.
有没有办法将密钥库和信任库绑定到sslsocketfactory对象,使其指向密钥库和信任库?
否则,连接将如何知道密钥库和信任库的位置(我不想使用java System Properties)?
ygg*_*raa 11
它是通过SSLContext完成的.您初始化一个然后使用它的套接字工厂来创建HttpsConnection实例.
以下是我在应用程序中管理此操作的粗略示例:
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(myKeyManagerFactory.getKeyManagers(), myTrustManagerArray, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
Run Code Online (Sandbox Code Playgroud)
之后你的openConnection()调用https站点将使用你在这里初始化的sslsocketfactory.
这里是TrustManager在您的ssl上下文中使用的代码,它将信任所有证书:
TrustManager[] myTrustManagerArray = new TrustManager[]{new TrustEveryoneManager()};
class TrustEveryoneManager implements X509TrustManager {
public void checkClientTrusted(X509Certificate[] arg0, String arg1){}
public void checkServerTrusted(X509Certificate[] arg0, String arg1){}
public X509Certificate[] getAcceptedIssuers() {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
来自Bruno的更新:当心,信任任何证书,无论多么方便,都会使连接容易受到MITM攻击
| 归档时间: |
|
| 查看次数: |
29977 次 |
| 最近记录: |