从1.3.x

时间:2016-08-17 08:13:45

标签: java spring ssl spring-boot

我遇到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版本。我在配置中遗漏了什么,所以它可以用于更新版本的弹簧靴?

提前致谢 干杯!

P.S。我对ssl相关主题知之甚少,所以请尝试解释一下这个问题。

2 个答案:

答案 0 :(得分:3)

由于Boot's Tomcat SSLsample

提供的Andy,我设法解决了这个问题
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

我的猜测(我可能错了)是Tomcat 8.5.4要求指定的server.ssl.key-store-password=password仅仅指定server.ssl.key-password是不够的,所以在更新配置后我来了这样的事情:

server.port=8449
# self signed cert with CN=localhost used for https method tests
server.ssl.key-store=keystore.p12
server.ssl.key-store-password=changeit
server.ssl.key-alias=some-alias
server.ssl.key-password=changeit
server.ssl.key-store-type=PKCS12

现在它按预期工作:) 希望这个答案有助于其他人。

P.S。是的,我知道对于特定密钥和一般商店使用相同的密码是不好的,但这只是一个测试密钥库。

答案 1 :(得分:0)

对我来说,一切都在我的本地机器上运行,但是当我尝试在我的Linux服务器(Amazon AWS EC2)上运行Spring Boot Server时,我得到了同样的错误。使用Spring Boot 1.3.x时,我没有收到此错误。

我能够通过安装Oracle JDK而不是预先安装在服务器上的Open JDK来解决这个问题。

这是我遵循的指南:https://gist.github.com/rtfpessoa/17752cbf7156bdf32c59