我想在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);
}
}
答案 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请求。