java – 在JCA中为TLS定义加密套件

我想使用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扩展的支持,使用JSSE的SPI,提供者和回调方法.我可以在运行时重新定义或添加新的密码实现,但我不确定JCA提供了足够的粒度来在TLS中添加新的密码套件.

解决方法

干净的方式是实现自己的 SSLSocketFactory.

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

相关课程是:

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

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

相关文章

应用场景 C端用户提交工单、工单创建完成之后、会发布一条工...
线程类,设置有一个公共资源 package cn.org.chris.concurre...
Java中的数字(带有0前缀和字符串)
在Java 9中使用JLink的目的是什么?
Java Stream API Filter(过滤器)
在Java中找到正数和负数数组元素的数量