在JCA中为TLS定义密码套件

时间:2011-06-07 12:04:08

标签: 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中获得支持,我是否可以使用SPI,JSSE的提供程序和回调方法扩展JCA以实现对这些PSK扩展的支持。我已经可以在运行时重新定义或添加新的密码实现,但我不确定JCA是否提供足够的粒度来在TLS中添加新的密码套件。

2 个答案:

答案 0 :(得分:4)

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

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

相关课程是:

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

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

答案 1 :(得分:3)

仍然不确定是否可能,但我们为Jessie图书馆找到了an implementation of several TLS PSK cipher suites