Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有办法让IBMJVM使用标准的RFC密码套件名称?_Java_Ssl_Jetty - Fatal编程技术网

Java 有没有办法让IBMJVM使用标准的RFC密码套件名称?

Java 有没有办法让IBMJVM使用标准的RFC密码套件名称?,java,ssl,jetty,Java,Ssl,Jetty,所有IBM密码套件名称都以SSL开头,尽管标准规定有些名称应该以TLS开头。有没有一个选项可以让JVM使用标准名称,这样我就不必创建特殊的include/exclude规则来让Jetty 9使用SSL?下面的链接中提到了一个选项,但我找不到任何关于选项名称或如何设置的文档。 IBMJ9JVM只允许在声明要使用的密码套件的精确列表时与RFC名称进行互操作 换句话说,它永远不会返回受支持列表中的RFC名称,而是在您声明要使用的内容时使用RFC名称 IBMJ9JVM的这一决定与许多项目不兼容 在使用

所有IBM密码套件名称都以SSL开头,尽管标准规定有些名称应该以TLS开头。有没有一个选项可以让JVM使用标准名称,这样我就不必创建特殊的include/exclude规则来让Jetty 9使用SSL?下面的链接中提到了一个选项,但我找不到任何关于选项名称或如何设置的文档。

IBMJ9JVM只允许在声明要使用的密码套件的精确列表时与RFC名称进行互操作

换句话说,它永远不会返回受支持列表中的RFC名称,而是在您声明要使用的内容时使用RFC名称

IBMJ9JVM的这一决定与许多项目不兼容

在使用IBM J9 JVM时,您必须声明要与任何在IBM J9 JVM上使用SSLEngine的产品一起使用的密码套件的完整列表。(HTTP客户端、WebSocket客户端、REST客户端、HTTP服务器等)

在Jetty上,您需要创建一个自定义的
SslContextFactory
,以IBM J9 JVM的方式运行,而不是使用RFC名称模式进行包含/排除。重写以下方法并以IBMJ9JVM的方式实现它

公共SSLParameters定制(SSLParameters sslParams)
{
super.customize(sslParams);
_SelectedCipherSuite=//IBM J9上选定密码套件的字符串[]
sslParams.setCipherSuite(_selectedCipherSuite);
}
另一种更有益的方法是创建一个新的注册安全提供商(比如“myIbmRFC”),它可以返回一个使用RFC名称的
SSLContext

它必须支持

String protocol=“TLS”;
字符串提供程序=“myIbmRFC”;
SSLContext context=SSLContext.getInstance(协议,提供程序);
context.init(..);//请阅读javadoc
SSLParameters enabled=context.getDefaultSSLParameters();
SSLParameters supported=context.getSupportedSSLParameters();
//这两个应该返回RFC名称(IBM和RFC之间的映射)
字符串[]EnabledCipherSuite=已启用。GetCipherSuite();
字符串[]SupportedCipherSuite=supported.GetCipherSuite();
注意:您不能在IBMJ9JVM上使用HTTP/2。无法发现,因此它无法通过HTTP/2初始化。如果您确实设法克服了这一点,那么使用RFC名称的列表也不会被覆盖,因此这将增加您从远程端点生成
安全性不足
的可能性,因为您将使用未被Jetty的HTTP/2层排除的黑名单密码套件