java - 在 JCA 中为 TLS 定义密码套件

标签 java cryptography ssl jca

我希望使用 JCA 在 TLS 中支持以下密码套件:

  • TLS_PSK_WITH_3DES_EDE_CBC_SHA
  • TLS_PSK_WITH_AES_128_CBC_SHA
  • TLS_PSK_WITH_NULL_SHA
  • TLS_PSK_WITH_AES_128_CBC_SHA256
  • TLS_PSK_WITH_NULL_SHA256

它们在 JDK7 中可用但不是JDK6 , 既不是 BouncyCaSTLe。

如果我想要 JDK6 中的支持,我可以扩展 JCA 以实现对这些 PSK 扩展的支持,使用 SPI、提供程序和 JSSE 的回调方法。我已经可以在运行时重新定义或添加新的密码实现,但我不确定 JCA 是否提供足够的粒度来在 TLS 中添加新的密码套件。

最佳答案

干净的方法是实现您自己的 SSLSocketFactory .

如果你想尝试添加我只看到通过反射修改内部类的方法。

相关类是:

com.sun.net.ssl.internal.ssl.CipherSuite

它有一个重载的私有(private)静态方法“add”,用于将密码实现添加到支持的列表中。可能值得一试。

关于java - 在 JCA 中为 TLS 定义密码套件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6264875/

相关文章:

javascript - 是否有任何接受十六进制输入的 JavaScript 加密 HMAC 库?

c++ - 解密 AES-256 加密文件不起作用

php - Symfony 2 功能测试 : bypassing ssl

PHP PDO 使用 SSL 连接到 MS SQLServer Express

java - 尽管已添加到信任库,但无法接受 CA 证书

java - Sun Directory Server 无法连接 ldap 服务器

java - 将先前添加的对象的成员打印到链表中

java - 使用 ImprovedNamingStrategy 创建表时出错

java - T型是什么类型

go - 如何在 Go 中对字节进行 SHA1 RSA 签名?