在带有嵌入式jetty v 9.2.13的spring boot v 1.4.0中禁用TLSv1.0

时间:2016-09-01 20:04:17

标签: spring-boot

我想在spring boot 1.4.0.RELEASE中禁用TLSv1.0。我们使用嵌入式Jetty版本9.2.13.v20150730和弹簧启动。

我不认为弹簧启动属性可以实现这一点。我试过了,但TLSv1仍然启用。

server.ssl.protocol TLS
server.ssl.enabled-protocols TLSv1.1,TLSv1.2

所以我查了一下spring boot auto配置代码。以下是Jetty的SSLContext如何初始化

以下configureSsl方法没有调用factory.setExcludeProtocols方法。即使SslContextFactory中包含setExcludeProtocols方法。

你能在spring boot中添加server.ssl.disabled-protocols属性吗?或者,如果已经可以禁用TLSv1.0,请告诉我。

/**
 * Configure the SSL connection.
 * @param factory the Jetty {@link SslContextFactory}.
 * @param ssl the ssl details.
 */
protected void configureSsl(SslContextFactory factory, Ssl ssl) {
    factory.setProtocol(ssl.getProtocol());
    configureSslClientAuth(factory, ssl);
    configureSslPasswords(factory, ssl);
    factory.setCertAlias(ssl.getKeyAlias());
    if (!ObjectUtils.isEmpty(ssl.getCiphers())) {
        factory.setIncludeCipherSuites(ssl.getCiphers());
        factory.setExcludeCipherSuites();
    }
    if (ssl.getEnabledProtocols() != null) {
        factory.setIncludeProtocols(ssl.getEnabledProtocols());
    }
    if (getSslStoreProvider() != null) {
        try {
            factory.setKeyStore(getSslStoreProvider().getKeyStore());
            factory.setTrustStore(getSslStoreProvider().getTrustStore());
        }
        catch (Exception ex) {
            throw new IllegalStateException("Unable to set SSL store", ex);
        }
    }
    else {
        configureSslKeyStore(factory, ssl);
        configureSslTrustStore(factory, ssl);
    }
}

1 个答案:

答案 0 :(得分:1)

我发现的一种方法是设置仅由TLSv1.2支持的密码。 例如: 如果您将放入application.yml

server.ssl.ciphers:TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256

使用CURL

openssl s_client -connect example.com:443 -tls1

您将看到该请求将被忽略/拒绝,因为您在application.yml中设置的密码将仅验证TLSv1.2请求。