Sectigoで生成された次のファイルがあります。
WindowsでZulu JDK 11.0.8とSpringBoot 2.2.0を使用しています。私がやろうとしていることは、SpringBootアプリでhttpsを有効にすることです。
これは、SpringBootプロパティファイルのsslプロパティです。
server.ssl.key-store-type=JKS
server.ssl.key-store=XX1.jks
server.ssl.key-store-password=password
server.ssl.key-alias=tomcat
次のコマンドを使用してキーストアを生成しました。
keytool -import -alias tomcat -file XXX1.crt -keystore XX1.jks -storepass password
アプリを実行すると、次のエラーメッセージが表示されます。
Caused by: org.apache.catalina.LifecycleException: Protocol handler start failed
at org.apache.catalina.connector.Connector.startInternal(Connector.java:1008) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at org.apache.catalina.core.StandardService.addConnector(StandardService.java:227) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
... 17 common frames omitted
Caused by: java.lang.IllegalArgumentException: jsse.alias_no_key_entry
at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:99) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:71) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:218) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1124) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at org.apache.tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1210) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java:586) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at org.apache.catalina.connector.Connector.startInternal(Connector.java:1005) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
... 19 common frames omitted
Caused by: java.io.IOException: jsse.alias_no_key_entry
at org.apache.tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.java:328) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at org.apache.tomcat.util.net.SSLUtilBase.createSSLContext(SSLUtilBase.java:247) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:97) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
... 25 common frames omitted
私が間違ったことは何ですか?
ありがとうございました
TLDR:秘密鍵が必要
多くの場合、「証明書」のあるまたは使用するSSL / TLSサーバーについて大まかに話しますが、実際には証明書だけでなく、関連する秘密鍵(常に)と関連する中間の別名「チェーン」CA証明書(通常)が必要です。 、ただしCAやクライアントによって異なる場合があります)。証明書またはチェーンのみをインポートkeytool -import
するエイリアスです-importcert
。これにより、証明書/チェーンが既存の privateKeyEntryに追加されるか、trustedCertEntryが作成されます。あなたの場合、キーストアにはまだ秘密鍵が含まれていなかったため、keytoolはtrustedCertEntryを作成しました。これが、Tomcatが設定されたエイリアスが「no_key_entry」であると不平を言う理由です。必要に応じて、privateKeyEntry。
「PEMをJavaキーストアに変換」または「PEMをJKSに変換」(および「PEMをPKCS12に変換」も検索)を検索すると、過去10年間に尋ねられた数百の質問が見つかります。 :
OpenSSLを持っている、または入手している場合は、を使用openssl pkcs12 -export
して、証明書、秘密鍵、およびチェーン(CA)PEM形式のファイルをPKCS12形式のファイルに結合します。最新のJava(2017以降)では、常にPKCS12を直接キーストアとして使用できます。古いバージョンではこれを実行できる場合がありますが、PKCS12をkeytool -importkeystore
(ではない-import[cert]
)を使用してJKSに変換する必要があり、古いアンサーは以前の要件を反映しています。必要に応じて、PEM形式のファイルを、十分に安全でOpenSSLを備えた別のマシンに移動またはコピーしてから、PKCS12を移動またはコピーして戻すことができます。
OpenSSLは、ほぼすべてのLinuxと他の多くのUnixに標準で付属していますが、Windowsには付属していません。私はhttp://slproweb.com/products/Win32OpenSSL.htmlが最もよく維持されていると考えるいくつかのソースからWindows用にそれを入手できます。
KeyStore Explorerをダウンロードして使用します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加