一尘不染

Java要为SSL套接字启用哪些密码套件?

java

我正在使用JavaSSLSocket保护客户端和服务器程序之间的通信。该服务器程序还提供来自Web浏览器的HTTPS请求。

据“ 开始加密与Java ”,371页,你应该总是叫setEnabledCipherSuites上你的SSLSocket/ SSLServerSocket,以确保密码套件最终被谈判是为您的目的足够强。

话虽这么说,对我SSLSocketFactorygetDefaultCipherSuites方法的调用产生了大约180个选项。这些选项的范围从TLS_RSA_WITH_AES_256_CBC_SHA(我认为是相当安全的)到SSL_RSA_WITH_RC4_128_MD5(不确定MD5的当前状态是否安全)到SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA(不确定要做什么)。

限制套接字使用的密码套件的明智列表是什么?

请注意,客户端和服务器可以访问Bouncy Castle服务提供商,并且它们可以安装也可以不安装无限的加密策略文件。


阅读 703

收藏
2020-03-06

共1个答案

一尘不染

2009年NIST的建议列出了以下内容,其中包括TLS_RSA_WITH_AES_256_CBC_SHA(您提到):

TLS_RSA_WITH_NULL_SHA(除非您确定不需要任何隐私/机密信息,否则请不要使用它)。

TLS_RSA_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA
TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA
TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_DH_DSS_WITH_AES_128_CBC_SHA
TLS_DH_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_DSS_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_DH_DSS_WITH_AES_256_CBC_SHA
TLS_DH_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_DSS_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_PSK_WITH_3DES_EDE_CBC_SHA
TLS_PSK_WITH_AES_128_CBC_SHA
TLS_PSK_WITH_AES_256_CBC_SHA
TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA
TLS_DHE_PSK_WITH_AES_128_CBC_SHA
TLS_DHE_PSK_WITH_AES_256_CBC_SHA
TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA
TLS_RSA_PSK_WITH_AES_128_CBC_SHA
TLS_RSA_PSK_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 
2020-03-06