当前位置: 首页 > 面试题库 >

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

齐栋
2023-03-14
问题内容

我正在使用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服务提供商,并且它们可以安装也可以不安装无限的加密策略文件。


问题答案:

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 


 类似资料:
  • 问题内容: 我最近一直在将SSL套接字用于消息传递系统。 我终于开始使用CA颁发的证书。我将其导入到密钥库中,设置了密钥库属性,并启动了客户端,但是当我尝试发送数据时,我一直收到握手异常。 我启用了调试模式,发现这是由于造成的。有什么想法吗? 如果有帮助,它还说它忽略了TLSV1和TLSV1.1中的大约10个密码套件。 我还安装了无限强度加密策略。 客户代码 服务器代码 编辑: 我刚刚添加了密码,

  • 问题内容: 我正在加密服务器和客户端之间的TCP连接。在研究和测试过程中,我倾向于使用秘密密钥加密。我的问题是我找不到有关如何实现此功能的任何教程。我发现的教程围绕一次HTTP请求进行,我只需要一个SSL套接字。 我到目前为止编写的代码如下。我几乎可以肯定它需要扩展,我只是不知道该怎么做。任何帮助表示赞赏。 接受客户端连接的服务器代码 我只是不知道如何实际进行握手。 参考:http : //doc

  • 问题内容: 如何创建SSL套接字连接? 我真的需要创建密钥库吗?该密钥库应该与我所有的客户端应用程序共享吗? 我用以下代码创建了一个服务器: 我用以下代码在android上创建了一个客户端: 但是当我尝试连接时,会引发以下错误: 问题答案: 您需要一个证书来建立ssl连接,您可以在密钥库中加载证书,也可以加载证书本身。我将显示一些有关keystore选项的示例。 您的代码需要一些参数才能运行: 您

  • 这很好,但没有SSL。 我已经使用OpenSSL为服务器和客户机生成了SSL证书,结果是: 服务器的证书(PEM格式) 客户端的证书(PEM格式) 服务器的私钥(PEM格式) 客户端的私钥(PEM格式) CA文件(PEM、CER和CRT格式) null 会出什么问题?

  • 我试图使用PowerShell从https网站抓取html内容。 不幸的是,该站点只例外一组有限的SSL/TLS密码套件,不支持Powershell可用的套件。 如果尝试使用Invoke-WebRequest cmdlet,我会收到以下错误消息: 调用-网络请求:请求被中止:无法创建SSL/TLS安全通道。 问题: 是否有办法指定PowerShell使用的客户端SSL/TLS密码套件? 还有其他c

  • 问题内容: 我在启用PHP中的套接字传输“ ssl”时遇到麻烦。运行脚本时,出现错误: 警告:fsockopen()[function.fsockopen]:无法连接到ssl://www.my.site.com:443(无法找到套接字传输“ ssl”-配置PHP时是否忘记启用它? ) 我正在Windows上运行IIS6,这是我到目前为止为使其正常工作所做的工作: 取消对php.ini中的php_o