为什么 SSLSocketFactory 缺少 setEnabledCipherSuites?

2024-03-14

SSLSocketFactory提供getDefaultCipherSuites(默认情况下在套接字上启用的密码)和getSupportedCipherSuites(如果需要,可以启用密码)。

然而,SSLSocketFactory不提供setEnabledCipherSuites配置密码列表一次以提供后续套接字的首选项。

事实上,我认为制作setEnabledCipherSuites部分SSLSocket确实使炒锅流程变得复杂。例如,HttpsURLConnection不提供getSocket,它确实打破了这个流程:

...
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, trustManager.getTrustManagers(), null);

HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setSSLSocketFactory(context.getSocketFactory());

我认为同样可以这样说SSLContext因为它有类似的方法getDefaultSSLParameters and getSupportedSSLParameters.

我试图为这种能力找出一个合理的安全工程原因,但我不能。也许这个决定有软件工程方面的原因。 (我怀疑这是有充分理由的,但目前我缺乏洞察力来看到它)。

为什么Java缺乏配置的能力SSLSocketFactory?这显然是一个设计决策,我试图理解为什么它是以牺牲图书馆相关部分的安全性为代价的。


为什么Java缺乏配置SSLSocketFactory的能力?

允许应用程序更改已启用的密码套件可能被认为是一个坏主意。你可能会说这是一个platform安全问题而不是应用程序责任,并且对于某些应用程序来说,能够启用(或禁用)系统管理员已禁用/启用的套件将是一件坏事。

但我不知道,而且我怀疑一小群人中没有一个人会really知道定期阅读 StackOverflow。

这显然是一个设计决定,

从某种意义上说,是的。但这可能只是偶然或默认发生的设计决策之一。或者可能是“他们”认为不会使用此功能。或者这样做可能有充分的安全理由。

不管怎样,如果你对此有强烈的感觉,你could建议将此作为 Java 增强功能(例如here http://bugs.java.com/bugdatabase/),或者开发一个补丁来实现您的增强功能并将其提交给 OpenJDK 团队。

如果您没有动力提出/实施增强功能,那么获得“他们为什么这样做”答案的最佳方法就是亲自询问“他们”。 (并请分享答案......)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 SSLSocketFactory 缺少 setEnabledCipherSuites? 的相关文章

随机推荐