gpt4 book ai didi

java - Java 中的 SSLSocketFactory

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:16:33 25 4
gpt4 key购买 nike

java中的SSLSocketFactory类在使用HttpsURLConnection时起到什么作用? java文档没有太大帮助。

是否有任何方法可以将 keystore 和信任库与 sslsocketfactory 对象绑定(bind),使其指向 keystore 和信任库?

否则连接如何知道 keystore 和信任库的位置(我不想使用 java System Properties)?

最佳答案

它是通过 SSLContext 完成的。您初始化一个,然后使用它的套接字工厂来创建 HttpsConnection 实例。

这是我如何在我的应用程序中管理它的粗略示例:

SSLContext sc = SSLContext.getInstance("SSL");
sc.init(myKeyManagerFactory.getKeyManagers(), myTrustManagerArray, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

之后,您对 https 站点的 openConnection() 调用将使用您在此处初始化的 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;
}
}

来自 Bruno 的更新:当心,信任任何证书,无论它多么方便,都会使连接容易受到 MITM 攻击

关于java - Java 中的 SSLSocketFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9921548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com