如何在Ubuntu中为Tomcat设置SSL证书

问题描述 投票:0回答:1

我使用 https://zerossl.com 作为证书,他们为我提供了这些文件:

  • ca_bundle.crt
  • 证书.crt
  • 私钥

然后我运行这些命令

生成p12文件

openssl pkcs12 -export -in certificate.crt -inkey private.key -out keystore.p12 -name tomcat -CAfile ca_bundle.crt -caname root -chain

生成JKS文件

keytool -importkeystore -srckeystore certifcate.p12 -srcstoretype pkcs12 -destkeystore mykeystore.jks -deststoretype pkcs12

然后我编辑我的/opt/tomcat/conf/server.xml

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
   maxThreads="150" scheme="https" secure="true"
   keystoreFile="/path/to/your/keystore.jks" keystorePass="your_keystore_password"
   keyAlias="tomcat" keyPass="your_key_password"
   clientAuth="false" sslProtocol="TLS" />

我不确定为什么 SSL 证书不起作用。如果有人告诉我我是否遗漏了什么,我将不胜感激。

java tomcat openssl keytool
1个回答
2
投票

所以你做得太多了。您不需要将密钥转换为 JKS 密钥库。 JKS 是 Java 最初的密钥库格式,是一种专有格式。从那时起 PKCS12 出现了,Java 终于支持它了,所以我建议只使用 p12 文件,并配置 tomcat 来读取 PKCS12,而不是尝试使用 JKS。

但是,为了快速回答,您从 PKCS12 -> JKS 的转换例程不会保存 JKS 文件。

-deststoretype pkcs12
应该是
-deststoretype JKS
但是,我们将为 PKCS12 这样做,因为那是“未来”。从技术上讲,Tomcat 从 5.0 开始就支持 PKCS12,但未来是这样的。

无论如何,这里是如何在 Tomcat 的设置中使用 P12 证书。

<Connector port="8443" 
           protocol="org.apache.coyote.http11.Http11NioProtocol" 
           SSLEnabled="true"
           maxThreads="150"
           scheme="https"
           secure="true"
           clientAuth="false" 
           sslProtocol="TLS" 
           keystoreFile="/your/path/certificate.p12"
           keystorePass="xxxxsomething_secretxxxxx"
           keystoreType="PKCS12" />
© www.soinside.com 2019 - 2024. All rights reserved.