gpt4 book ai didi

java - 告诉任意 SSLSocketFactories 信任所有证书?

转载 作者:太空宇宙 更新时间:2023-11-03 13:45:11 25 4
gpt4 key购买 nike

我有一个实用程序 SSLSocketFactory 类,它基本上允许您切换是否要信任所有证书和/或由于 JDK 错误而关闭 Diffie-Hellman。我最近添加了提供您自己的 SSLSocketFactory 的选项,但似乎忘记了什么

在工厂中禁用 Diffie-Hellman 很容易,只需在创建套接字时添加一些代码即可。但是,为了信任所有证书,我用不同的证书替换了工厂

public UtilSSLSocketFactory trustAllCertificates() {
if (trustingAllCertificates)
//Already doing this, no need to do it again
return this;
trustingAllCertificates = true;
try {
TrustManager[] tm = new TrustManager[] {new TrustingX509TrustManager()};
SSLContext context = SSLContext.getInstance("SSL");
context.init(new KeyManager[0], tm, new SecureRandom());
wrappedFactory = (SSLSocketFactory) context.getSocketFactory();
} catch (Exception e) {
throw new RuntimeException("Can't recreate socket factory that trusts all certificates", e);
}
return this;
}

有没有办法告诉任意 SSLSocketFactory 信任所有证书而不替换它?

最佳答案

除了盲目信任所有证书通常不是一个好主意(如果您希望使用 SSL/TLS 来保护通信)之外,您使用的模式似乎很奇怪。

SSLContextSSLSocketFactory 的工厂,后者又是 SSLSocket 的工厂。

如果需要,您可以使用 SSLContext.setDefault(...) 设置默认的 SSLContext(从 Java 6 开始):这将影响默认的 SSLSocketFactory,但可能不是更具体的。

您不能更改现有 SSLSocketFactory 实例使用的 SSLContext

除非您现有的 SSLSocketFactory 与具有特定设置的默认实现不同(例如,您会在返回之前对创建的套接字进行调整),否则您尝试做的事情似乎不合适预期的设计模式。

关于java - 告诉任意 SSLSocketFactories 信任所有证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10724789/

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