我想禁用SSL实验室认为很弱的密码套件(下面的列表),以便在SparkJava服务器上通过他们的SSL测试。
要禁用的密码:
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
Spark版本spark-core 2.5(包括Jetty 9.3),Java 8.
Spark没有外部配置文件,文档中没有提及如何正确执行此操作而不会搞乱。
有专门知识的人能否解释一下该做什么? 谢谢。
答案 0 :(得分:1)
假设您在没有任何其他安全提供程序的情况下使用Sun JVM,那么Spark正在使用JVM的Sun安全提供程序进行SSL / TLS - JSSE。您可以通过修改位于jre/lib/security/java.security
的{{3}}来停用特定算法。
具体来说,你可以这样做:
jdk.tls.disabledAlgorithms=SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
以上介绍了如何在Java VM级别禁用密码套件 - 您还可以JSSE's configuration file。这可以使用configure this within Jetty在代码中完成。
它也可以用XML配置。创建一个新配置文件${jetty.base}/etc/disable-ciphers.xml
(只要它不以jetty-
开头,它就可以有任何名称)
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
"http://www.eclipse.org/jetty/configure_9_3.dtd">
<Configure id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory">
<Call name="addExcludeCipherSuites">
<Arg>
<Array type="String">
<Item>TLS_DHE_RSA_WITH_AES_128_.*$/Item>
<Item>SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA</Item>
</Array>
</Arg>
</Call>
</Configure>
最后,您需要告诉Jetty这个文件,因此通过向文件尾部添加${jetty.base}/start.ini
的相对路径引用来修改disable-ciphers.xml
。
但是,Spark不允许配置Jetty - 请参阅Github SslContext.setExcludeCipherSuites(java.lang.String…) - 这意味着除非您按照问题评论中的讨论手动实例化Jetty,否则这种方法无效。