【发布时间】:2014-10-15 16:06:31
【问题描述】:
为了保护我的 Thrift 服务器免受最近发现的 SSLv3 vulnerability 的攻击,我明确说明了应该为服务器套接字启用哪些协议:
TServerSocket socket = TSSLTransportFactory.getServerSocket(...);
SSLServerSocket sslServerSocket = (SSLServerSocket) socket.getServerSocket;
sslServerSocket.setEnabledProtocols(new String[] {"TLSv1.1", "TLSv1.2"});
但是,即使使用 TestSSLServer 进行的检查仅列出 TLSv1.1 和 TLSv1.2,我仍然可以使用 SSLv3 连接 OpenSSL:
openssl s_client -connect localhost:1111 -ssl3
如何在 Thrift 上完全禁用 SSLv3,使其在 SSL 握手期间失败?
【问题讨论】:
-
在设置启用协议之前和之后,是什么给了您 sslServerSocket.getEnabledProtocols() 和 sslServerSocket.getSupportedProtocols()?
-
BEFORE_ENABLED:SSLv2Hello,SSLv3,TLSv1,TLSv1.1,TLSv1.2 | BEFORE_SUPPORTED:SSLv2Hello,SSLv3,TLSv1,TLSv1.1,TLSv1.2 | AFTER_ENABLED:TLSv1.1,TLSv1.2 | AFTER_SUPPORTED:SSLv2Hello,SSLv3,TLSv1,TLSv1.1,TLSv1.2
-
没有 SSL 就不能设置 SSLContext 实例吗?请参阅download.java.net/jdk7/archive/b124/docs/technotes/guides/… 了解更多信息。