Onk*_*nki 6 java ssl spring spring-boot
我有一个.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 org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:305)
at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:159)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683)
at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
因此,任何人都可以对在春季启动时如何使用不受密码保护的.p12证书有所了解。
所有的Google文章似乎都在说明预期的密码。所以在Java中这是强制性的吗?
所以经过所有的研究,似乎java密钥存储需要一个密码。所以我不得不忽略我们没有密码的.p12。并使用 pem 证书,我们将其转换为带密码的 .p12。我是从 spring 代码中执行此操作的,其中我将随机密码传递给 shell 脚本,该脚本使用该密码从 .pem 生成 .p12。
然后我从代码中将相同的密码传递给 ssl 属性。
一个缺点是每次应用程序重新启动时我都必须从 .pem 重新生成 .p12,但这就是我防止静态密码的方法。
| 归档时间: |
|
| 查看次数: |
144 次 |
| 最近记录: |