我有 2 个由 CA 签名的证书。我想使用这些证书在 tomcat 上启用 ssl。
我运行以下命令来创建 jks 文件并将证书导入该 jks 文件。
1. keytool -genkey -alias bmark.com -keyalg RSA -keystore keystore.jks
2. keytool -import -alias root -keystore keystore.jks -trustcacerts -file b32dasd75493.crt
3. keytool -import -alias intermed -keystore keystore.jks -trustcacerts -file sf_bundle-g2-g1.crt
并在tomcat的server.xml中启用https
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="/Users/test/Desktop/keystore.jks" keystorePass="changeme"/>
启动tomcat并打开urlhttps://bmark.com:8080在 chrome 中,但它声称 CA 签名的 SSL 证书不受信任,声称它是自签名的。除了这些之外,我还需要其他文件吗?我该如何解决这个问题?
答案1
要检查 CA 响应是否已正确安装,请运行:
keytool -list -keystore /Users/test/Desktop/keystore.jks -alias bmark.com -v
它应该向您显示从叶到根的证书链。
在您的连接器定义中您没有指定密钥别名,因此将使用找到的第一个证书。将其更改为:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/Users/test/Desktop/keystore.jks"
keystorePass="changeme"
keyAlias="bmark.com" />
或者,如果你使用Tomcat 8.5(你不应该使用 Tomcat 8.0),切换到新的 SSL 配置:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" scheme="https" secure="true" SSLEnabled="true">
<SSLHostConfig protocols="TLS">
<Certificate certificateKeystoreFile="/Users/test/Desktop/keystore.jks"
certificateKeystorePassword="changeme"
certificateKeyAlias="bmark.com" />
</SSLHostConfig>
</Connector>
编辑:要安装所有三个证书,您只需要一个包含您的证书和中间件(按从词干到词根的顺序)的文件,然后运行:
keytool -importcert -keystore /Users/test/Desktop/keystore.jks\
-alias bmark.com -file <chain_file> -trustcacerts
或者你也可以从根部到茎部分别插入。