我有一个.pem证书,必须在我的Spring Boot应用程序中使用。现在,由于Java无法理解.pem格式,因此我将其转换为.p12格式。
由于我们已经有一个不受任何密码保护的.pem证书,因此我也尝试避免使用.p12密码。
我创建了两个.p12文件,其中一个使用以下命令使用密码:
openssl x509 -signkey sslcert.key -in sslcert.csr -req -days 365
-out sslcert.pem
Run Code Online (Sandbox Code Playgroud)
另一个没有密码的命令如下:
openssl pkcs12 -inkey sslcert.key -in sslcert.pem -export -passout
pass: -nokeys -out sslcert.p12
Run Code Online (Sandbox Code Playgroud)
我能够在spring boot应用程序中使用以下属性,使用带有密码的密码成功获得结果:
server.port=8443
server.ssl.enabled=true
server.ssl.key-store-type=PKCS12
server.ssl.key-store=keys/sslcert.p12
server.ssl.key-store-password=password
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用不带密码的密码(这是我的偏好)时,却遇到了sslhandshake异常。
而且,我无法弄清楚如何将此信息传递给ssl没有密码保护的spring boot。
到目前为止,我尝试了许多组合,例如不传递密码属性或将其保留为空,但在所有情况下均失败。
server.port=8443
server.ssl.enabled=true
server.ssl.key-store-type=PKCS12
server.ssl.key-store=keys/sslcert.p12
Run Code Online (Sandbox Code Playgroud)
我低于异常:
javax.net.ssl.SSLHandshakeException: no cipher suites in common
at sun.security.ssl.Handshaker.checkThrown(Unknown Source)
at sun.security.ssl.SSLEngineImpl.checkTaskThrown(Unknown Source)
at sun.security.ssl.SSLEngineImpl.writeAppRecord(Unknown Source)
at sun.security.ssl.SSLEngineImpl.wrap(Unknown Source)
at javax.net.ssl.SSLEngine.wrap(Unknown Source)
at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.flush(SslConnection.java:864)
at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.fill(SslConnection.java:515)
at org.eclipse.jetty.server.HttpConnection.fillRequestBuffer(HttpConnection.java:331)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:243)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:411)
at …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Spring Integration实现以下场景:
这是我的配置:
<channel id="input">
<interceptors>
<wire-tap channel="logger"/>
</interceptors>
</channel>
<logging-channel-adapter id="logger" level="DEBUG" log-full-message="true"/>
<ip:tcp-connection-factory id="factory" type="client" host="localhost" port="9004" single-use="false"
using-nio="true" deserializer="javaDeserializer"/>
<ip:tcp-inbound-channel-adapter id="inbound" channel="input" connection-factory="factory" client-mode="true"
retry-interval="5000"/>
Run Code Online (Sandbox Code Playgroud)
我可以接收从服务器发送的消息,但我不知道如何转换字符串.消息到达时不调用javaDeserializer.
2014-01-19 05:47:20 DEBUG TcpNioConnection:380 - localhost:9004:74154fb2-f77c-4036-9142-e756e53a6ac6 Reading...
2014-01-19 05:47:20 DEBUG TcpNioConnection:324 - Read 26 into raw buffer
2014-01-19 05:47:25 DEBUG TcpNioConnection:380 - localhost:9004:74154fb2-f77c-4036-9142-e756e53a6ac6 Reading...
2014-01-19 05:47:25 DEBUG TcpNioConnection:324 - Read 26 into raw buffer
2014-01-19 05:47:30 DEBUG TcpNioConnection:380 - localhost:9004:74154fb2-f77c-4036-9142-e756e53a6ac6 Reading...
2014-01-19 05:47:30 DEBUG TcpNioConnection:324 - Read 26 …Run Code Online (Sandbox Code Playgroud)