java - 如何在 Spring Boot 嵌入式 tomcat 中设置 HTTPS SSL Cipher Suite Preference

标签 java spring tomcat ssl spring-boot

我尝试根据服务器首选项设置 HTTPS SSL 密码套件首选项,而不是根据客户端和服务器支持的具有最高强度的通用密码套件自动选择。

我喜欢让服务器选择具有“TLS_ECDHE...”的服务器和客户端之间的共同点,以支持前向保密。 现在我在“www.ssllabs.com”中进行了测试,客户端浏览器将更喜欢具有“TLS_RSA ...”而不是“TLS_ECDHE”的密码......

我注意到 java 8 支持设置密码套件首选项: http://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#cipher_suite_preference

我假设 spring boot 嵌入式 Tomcat 将调用 Java 8 函数来选择密码

这是我在 spring boot application.properties 文件中设置服务器支持密码集的方法:

server.ssl.ciphers=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_DSS_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_SHA256,TLS_ECDHE_RSA_WITH_AES_128_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_SHA,TLS_ECDHE_RSA_WITH_AES_256_SHA384,TLS_ECDHE_ECDSA_WITH_AES_256_SHA384,TLS_ECDHE_RSA_WITH_AES_256_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_SHA,TLS_DHE_RSA_WITH_AES_128_SHA256,TLS_DHE_RSA_WITH_AES_128_SHA,TLS_DHE_DSS_WITH_AES_128_SHA256,TLS_DHE_RSA_WITH_AES_256_SHA256,TLS_DHE_DSS_WITH_AES_256_SHA,TLS_DHE_RSA_WITH_AES_256_SHA

希望有人能指导我如何覆盖默认的选择密码行为。

最佳答案

您需要告诉连接器的底层协议(protocol)处理程序使用服务器的密码套件顺序。您可以使用 WebServerFactoryCustomizer 执行此操作:

@Bean
public WebServerFactoryCustomizer<TomcatServletWebServerFactory> servletContainerCustomizer() {
    return (factory) -> {
        factory.addConnectorCustomizers((c) -> 
            ((AbstractHttp11Protocol<?>) c.getProtocolHandler()).setUseServerCipherSuitesOrder(true));
    };
}

关于java - 如何在 Spring Boot 嵌入式 tomcat 中设置 HTTPS SSL Cipher Suite Preference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43940608/

相关文章:

java - 将一个数 n 分成两个数,使得两个数之和为 n

java - 如何编写自定义 JOptionPane 按钮?

java - 在 Java 中使用阻塞 NIO

java - 如何使用 Spring Boot 将配置读取到 map

java - 无法解析依赖项: org. springframework.transaction

tomcat - 将 jBoss EJB 注入(inject)在 tomcat web 应用程序中运行的 JSF 2.0 托管 bean

java - 在 Tomcat 中使用 JSP 上传图像

java - neo4j 直接访问和通过 OGM 之间的显着性能差异

java - 在接口(interface)注释中使用 application.properties 值

java - 在 Eclipse 中对 Tomcat 的 war 部署有效,但不能独立于 Tomcat