私は春のブートアプリケーションで使用する必要があるの.pem証明書を持っています。javaは.PEM形式を理解していないので、今、私は.P12形式に変換しています。
、我々はすでに任意のパスワードで保護されていないの.pem証明書を持っているので、私も.P12のパスワードを避けるためにしようとしています。
私は2つの.p12のファイルを作成し、1には、コマンドの下に使用したパスワードです。
openssl x509 -signkey sslcert.key -in sslcert.csr -req -days 365
-out sslcert.pem
そして、パスワードなしで他のコマンドの下に使用して:
openssl pkcs12 -inkey sslcert.key -in sslcert.pem -export -passout
pass: -nokeys -out sslcert.p12
そして、私は春のブートアプリケーションのプロパティの下に使用してパスワードを持つものを使用して成功した結果を得ることができています:
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
私は私の好みですパスワードなしで1を使用しようとしていますときしかし、私はsslhandshake例外を取得しています。
そしてまた、私は、SSLはパスワードで保護されていないことを春ブーツにこの情報を渡す方法を把握することはできませんよ。
これまでのところ私は、パスワードのプロパティを渡すか、それが空に保つことではないように多くの組み合わせを試してみましたが、それはすべての場合に失敗しました。
server.port=8443
server.ssl.enabled=true
server.ssl.key-store-type=PKCS12
server.ssl.key-store=keys/sslcert.p12
私は、例外の下に取得しています:
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)
SO、いずれも春ブーツに非パスワード保護された.P12証明書を使用する方法についていくつかの光を投げることができます。
すべてのグーグルの記事はpropectedパスワードについて語っているように見えます。SOこれは、Javaで必須なものでしょうか?
だから、すべての研究の後に、Javaキーストアがパスワードを必要とするようです。だから私たちは、パスワードなしで持っていた.P12を無視しなければなりませんでした。そして、PEM証明書を使用して、我々はパスワードで.P12にそれを変換します。そして、私はそのパスワードを使っての.pemから.P12を生成し、シェルスクリプトにランダムなパスワードを渡しています春のコードからこれをやっています。
そして私は、コードからのSSLプロパティに同じパスワードを渡しています。
一つの欠点は、私は.PEMから再起動されるたびにアプリケーションを.P12再生成する必要があるが、これは、私は、静的なパスワードを防ぐ方法です。