web-dev-qa-db-ja.com

解決方法:Java.io.IOException:jsse.alias_no_key_entry

TomcatがインストールされたDebian仮想マシンを持っています。私のウェブサイトがHttpsになるようにSSL証明書をインストールしたいと思います。

VMで次の証明書ファイルを受け取りました。

my-domain.cer  my-domain.chain.crt.pem  my-domain.crt.pem
my-domain.csr  my-domain.key  my-domain.ch.p7c

次のコマンドでキーストアを作成しました。

keytool -import -trustcacerts -alias Tomcat -keystore keystore.jks -file my-domain.cer

次に、ファイルを変更しましたconf/server.xmlファイルと次のコード:

<Connector acceptCount="100" bindOnInit="false" connectionTimeout="20000" disableUploadTimeout="true" enableLookups="false"
        maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" useBodyEncodingForURI="true"
        keyAlias="Tomcat" keystoreFile="/usr/local/Tomcat/ssl/keystore.jks" keystorePass="PASSWORD" keystoreType="JKS"
        port="8443" protocol="org.Apache.coyote.http11.Http11NioProtocol" scheme="https" secure="true"
        sslEnabledProtocols="TLSv1.2,TLSv1.3" SSLEnabled="true" clientAuth="false"/>

残念ながら、Tomcatを起動すると次のエラーが表示されます。

 org.Apache.catalina.LifecycleException: Protocol handler initialization failed
        at org.Apache.catalina.connector.Connector.initInternal(Connector.Java:983)
        at org.Apache.catalina.util.LifecycleBase.init(LifecycleBase.Java:136)
        at org.Apache.catalina.core.StandardService.initInternal(StandardService.Java:535)
        at org.Apache.catalina.util.LifecycleBase.init(LifecycleBase.Java:136)
        at org.Apache.catalina.core.StandardServer.initInternal(StandardServer.Java:1055)
        at org.Apache.catalina.util.LifecycleBase.init(LifecycleBase.Java:136)
        at org.Apache.catalina.startup.Catalina.load(Catalina.Java:585)
        at org.Apache.catalina.startup.Catalina.load(Catalina.Java:608)
        at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:62)
        at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
        at Java.lang.reflect.Method.invoke(Method.Java:498)
        at org.Apache.catalina.startup.Bootstrap.load(Bootstrap.Java:306)
        at org.Apache.catalina.startup.Bootstrap.main(Bootstrap.Java:491)
Caused by: Java.lang.IllegalArgumentException: jsse.alias_no_key_entry
        at org.Apache.Tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.Java:99)
        at org.Apache.Tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.Java:71)
        at org.Apache.Tomcat.util.net.NioEndpoint.bind(NioEndpoint.Java:224)
        at org.Apache.Tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.Java:1103)
        at org.Apache.Tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.Java:1116)
        at org.Apache.coyote.AbstractProtocol.init(AbstractProtocol.Java:557)
        at org.Apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.Java:74)
        at org.Apache.catalina.connector.Connector.initInternal(Connector.Java:980)
        ... 13 more
Caused by: Java.io.IOException: jsse.alias_no_key_entry
        at org.Apache.Tomcat.util.net.SSLUtilBase.getKeyManagers(SSLUtilBase.Java:330)
        at org.Apache.Tomcat.util.net.openssl.OpenSSLUtil.getKeyManagers(OpenSSLUtil.Java:104)
        at org.Apache.Tomcat.util.net.SSLUtilBase.createSSLContext(SSLUtilBase.Java:239)
        at org.Apache.Tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.Java:97)
        ... 20 more

どこから来るのかわかりません。私のエイリアスは良いものだからです...

よろしくお願いします

3
C_IsmE

私の場合、この問題の原因は、アプリケーションに存在するSSLキーエイリアスが、証明書の作成中に渡されたエイリアスと同じではないことでした。

keytool -genkeypair -keyalg RSA -alias dummyApp -keystore dummy-app.p12 -storepass password -validity 3650 -keysize 2048 -dname "CN=dummy-app, OU=Enterprise, O=Test, L=Unknown, ST=Unknown, C=US" -storetype pkcs12

修正するには、これをserver.ssl.key-aliasプロパティの値を修正する必要がありました。上記のSSL生成の例に従って、その値はdummyAppである必要があります。

1
Vijay Nandwana

秘密鍵をキーストアにインポートする必要があります。

Step1: openSSLをダウンロードしてC:\ OpenSSL-win64\binに移動する必要があります次に、次のコマンドを入力します。

openssl pkcs12 -export -in C:\ Keystore\certificate.crt -inkey C:\ Keystore\name_key.key -out C:\ Keystore\server.p12 -name [name_alias] -CAfile C:\ Keystore\rootCA.crt-カナメの根

注:server.xmlでエイリアス「Tomcat」を使用する場合

keyAlias = "Tomcat"

keystoreFile = "C:\ Keystore\server.jks"

keystorePass = "あなたのパス"

次に[name_alias] = Tomcat

ステップ2: cmdを使用してC:\ program files\Java\jdk ..\binに移動し、次のコマンドを入力してp12ファイルをjksファイルに変換します。

keytool -importkeystore -deststorepass mypass -destkeystore C:\ Keystore\server.jks -srckeystore C:\ Keystore\server.p12 -srcstoretype PKCS12

Tomcatサーバーを再起動する

私は自分の問題を修正しました、今、私は本当にうれしいです!

1
Chung Dao Tran

次のコマンドを実行します

#First step

jmendoza@jmendoza:~$ openssl genrsa -aes256 -out electoralsystem-cakey.pem 2048 -alias electoralsystem-cakey.pem

Enter pass phrase for electoralsystem.key: jmendoza

#Second step

jmendoza@jmendoza:~$ openssl req -new -x509 -sha256 -key electoralsystem-cakey.pem -days 365 -out electoralsystem-cacert.pem

jmendoza@jmendoza:~$ openssl x509 -in electoralsystem-cacert.pem -text

#Third step

jmendoza@jmendoza:~$ openssl pkcs12 -export -in electoralsystem-cacert.pem -inkey electoralsystem-cakey.pem -out electoralsystem-store.p12 -name "electoralsystem-store"

Enter Export Password: jmendoza

#Fourth step
jmendoza@jmendoza:~$ keytool -importkeystore -destkeystore electoralsystem-store.jks -deststorepass jmendoza -srckeystore electoralsystem-store.p12 -srcstoretype PKCS12 -srcstorepass jmendoza -alias electoralsystem-store

Spring Boot(application.properties)の設定例

server.port=8081
server.ssl.key-alias=electoralsystem-store
server.ssl.key-password=jmendoza
server.ssl.key-store=/home/jmendoza/IdeaProjects/dummy/config/electoralsystem-store.jks
server.ssl.key-store-provider=Sun

ここに画像の説明を入力

0