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
どこから来るのかわかりません。私のエイリアスは良いものだからです...
よろしくお願いします
私の場合、この問題の原因は、アプリケーションに存在する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
である必要があります。
秘密鍵をキーストアにインポートする必要があります。
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サーバーを再起動する
私は自分の問題を修正しました、今、私は本当にうれしいです!
#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
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