【发布时间】:2016-12-23 19:14:31
【问题描述】:
我的ssl配置有问题,我的配置如下:
server.port=8449
# self signed cert with CN=localhost used for https method tests
server.ssl.key-store=keystore.p12
server.ssl.key-password=password
server.ssl.key-alias=some-alias
server.ssl.key-store-type=PKCS12
如果与 1.3.7 版本的 spring boot 一起使用,一切正常。如果在客户端升级到 1.4.0,我会得到:
javax.ws.rs.ProcessingException: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at org.glassfish.jersey.client.internal.HttpUrlConnector.apply(HttpUrlConnector.java:287)
at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:255)
at org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:700)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444)
at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:696)
at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:448)
并从 chrome 结果调用 ssl 端口:
客户端和服务器不支持通用的 SSL 协议版本或密码套件。这很可能是当服务器需要 RC4 时引起的,这不再被认为是安全的。
Firefox 也出现类似错误。
正如我所说,唯一不同的配置是 Spring Boot 版本。我是否在配置中遗漏了某些内容,以便可以与较新版本的 Spring Boot 一起使用?
提前致谢 干杯!
附:我对 ssl 相关的主题不是很了解,所以请尽量简单地解释一下。
【问题讨论】:
-
您不需要在 1.4 中以不同方式配置 SSL。我刚刚尝试过Boot's Tomcat SSL sample,它适用于 Safari 和 Chrome。你能提供一个重现问题的小样本吗?
-
感谢示例链接,它帮助我解决了问题:) 问题在于它的配置方式,使用 Tomcat 8.0.x 配置工作得很好,但使用 Tomcat 8.5.4 似乎(也许我错了)您需要明确指定密钥库密码,而不仅仅是我的示例中的密钥密码。
-
我有一个非常相似的问题,在将 Spring Boot 从 1.3 升级到 1.4 时,我丢失了所有 ECDHE 密码,只剩下 DHE 密码。如果我将 Tomcat 降级到 8.0.x,一切都会恢复正常。我指定了密钥库和密钥密码都无济于事。
标签: java spring ssl spring-boot