我正在尝试在 Tomcat 上启用 SSL(在 Google Compute Engine 上的 Ubunbu 实例上运行自定义域)。
我创建了 Let's Encrypt 证书,它在以下位置创建了 4 个文件/etc/letsencrypt/live/mydomain.com
:
cert.pem
chain.pem
fullchain.pem
privkey.pem
然后:
cd /etc/letsencrypt/live/mydomain.com
openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out pkcs.p12 -name tomcat
keytool -importkeystore -deststorepass mypassword -destkeypass mypassword -destkeystore
KeyStore.jks -srckeystore pkcs.p12 -srcstoretype PKCS12 -srcstorepass mypassword -alias
tomcat
sudo cp KeyStore.jks /opt/tomcat/conf/.keystore
启用连接器:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
URIEncoding="UTF-8" maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/opt/tomcat/conf/.keystore" keystorePass="mypassword" keyAlias="tomcat"
/>
我收到错误:
SEVERE [main] org.apache.catalina.core.StandardService.initInternal Failed to initialize connector [Connector[org.apache.coyote.http11.Http11Protocol-8443]]
org.apache.catalina.LifecycleException: Failed to initialize component [Connector[org.apache.coyote.http11.Http11Protocol-8443]]
Caused by: java.lang.NullPointerException
如果我使用以下方法检查密钥库
keytool -list -v -keystore /opt/tomcat/conf/.keystore
它列出了证书(我认为正确)。
我允许使用端口 8443(但 443 也出现同样的错误)。如果我注释掉这个连接器,我就可以通过 http 顺利连接到 mydomain。
我在这个过程中遗漏了什么?我读过很多关于这个主题的帖子,但似乎不知道还需要什么。除了连接器之外,一切似乎都正常工作。