我有一个安装了 Tomcat 的 Debian 虚拟机。我想安装一个 SSL 证书,以便我的网站在 Https 中。
我的 VM 收到了以下证书文件:
my-domain.cer my-domain.chain.crt.pem my-domain.crt.pem
my-domain.csr my-domain.key my-domain.ch.p7c
Run Code Online (Sandbox Code Playgroud)
我使用以下命令创建了一个密钥库:
keytool -import -trustcacerts -alias tomcat -keystore keystore.jks -file my-domain.cer
Run Code Online (Sandbox Code Playgroud)
然后,我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"/>
Run Code Online (Sandbox Code Playgroud)
不幸的是,在启动 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
Run Code Online (Sandbox Code Playgroud)
我不明白它来自哪里。因为我的别名是好的...
预先感谢您的帮助
就我而言,此问题的原因是应用程序中存在的 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
.
刚刚遇到这个问题,仅限 .p7b。此错误意味着您的密钥库不包含原始私钥。
请确保您的私钥(.csr)与 .p7b 链位于同一密钥库中。
我按照以下步骤操作:
1.使用密钥库生成密钥:
keytool -genkey -alias [别名名称] -keyalg RSA -keystore [输入密钥库名称] -keysize 2048
此命令不仅创建密钥条目,还在密钥库中创建私钥。这就是为什么将 .p7b 导入到同一个密钥库中很重要。
2.从此条目生成 CSR:
keytool -certreq -keyalg RSA -keysize 2048 -alias [别名] -file [csr_文件名] -keystore [密钥库名称] -ext san=dns:[服务器的 FQDN]
3.将收到的签名 .p7b 导入到同一个密钥库中(我建议您将 .p7b 下载到 .csr 和密钥库所在的同一文件夹中):
keytool -import -alias [别名] -trustcacerts -file [ssl_certificate.p7b] -keystore [密钥库名称]
如果一切正确,您的密钥库将包含生成的私钥和收到的 .p7b。
归档时间: |
|
查看次数: |
32293 次 |
最近记录: |