You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tomcat部署SSL证书无效问题排查求助

问题:Tomcat部署SSL后浏览器提示证书无效(Issuer显示错误)

环境与现状

  • Windows企业服务器Tomcat,Java/Angular应用HTTP远程访问正常
  • 已获取CA证书并生成mycert.jks,放置于Tomcat\conf目录,server.xml的Connector配置如下:
<Connector port="xxx" maxHttpHeaderSize="8192" maxThreads="100"
           minSpareThreads="25" maxSpareThreads="75"
           enableLookups="false" disableUploadTimeout="true"
           acceptCount="100" scheme="https" secure="true"
           SSLEnabled="true" clientAuth="false"
           sslProtocol="TLS" keyAlias="myalias"
           keystoreFile="conf\mycert.jks"
           keystorePass="mypass" />
  • 通过https://10.10.100.10/myapp访问时应用可加载,但浏览器提示「Not secure - Certificate is not valid」;Issued To的通用名、有效期等信息正确,服务器时间正常,证书未过期。

证书详情(更新)

Issued To
Common Name (CN)    mycn
Organization (O)    myorg
Organizational Unit (OU)    <Not Part Of Certificate>

Issued By
Common Name (CN)    mycn
Organization (O)    myorg
Organizational Unit (OU)    <Not Part Of Certificate>

Validity Period
Issued On   Tuesday, September 26, 2023 at 9:38:18AM
Expires On  Monday, December 25, 2023 at 9:38:18AM

Fingerprints
SHA-256 Fingerprint XX XX XX XX XX XX...
SHA-1 Fingerprint   XX XX XX XX XX XX...

重新生成证书后的操作(更新2)

  1. 使用以下命令生成.jks和.csr文件:
keytool -genkey -alias myservername -keyalg RSA -keysize 2048 -keystore myservername.jks -dname "CN=myservername, O=MyOrg, L=, ST=, C=" && keytool -certreq -alias myservername -file myservername.csr -keystore myservername.jks
  1. 执行keytool -list -keystore myservername.jks得到:
myservername, Oct 20, 2023, PrivateKeyEntry,
Certificate fingerprint (SHA-256): xxxxxxxx
  1. 将myservername.csr提交给CA,获取证书内容保存为myservername.cer;证书路径为rootcertname > intermediatecertname > myservername,导出根证书和中间证书为rootcertname.cer、intermediatecertname.cer,导入到keystore:
keytool -keystore myservername.jks -import -alias root -trustcacerts -file rootcertname.cer
keytool -keystore myservername.jks -import -alias intermediate -trustcacerts -file intermediatecertname.cer
  1. 再次执行keytool -list -keystore myservername.jks确认已包含私钥、根证书和中间证书,但访问时仍提示证书无效。

重要发现

查看证书时,Issuer名称显示为myservername(私钥别名),而非CA证书名称。


问题原因与解决步骤

核心原因

生成CSR后,未将CA签发的服务器证书导入到对应私钥的别名下。当前keystore里的myservername条目仍是自签名证书(Issuer与Subject一致),CA签发的证书并未替换它,导致Tomcat加载的还是自签名证书,浏览器判定无效。

正确操作步骤

  1. 确认已获取CA签发的服务器证书文件(如myservername.cer)
  2. 执行以下命令,将CA签发的服务器证书导入到myservername别名对应的私钥条目下:
keytool -import -alias myservername -keystore myservername.jks -file myservername.cer

注意:alias必须与生成私钥时的别名完全一致,这样keytool才会将CA证书与已存在的私钥绑定,替换原来的自签名证书。

  1. 验证导入结果:执行keytool -list -v -keystore myservername.jks -alias myservername,查看Issuer字段是否显示CA的名称(而非myservername)

  2. 重启Tomcat,重新访问https://10.10.100.10/myapp检查证书状态。

额外注意事项

  • 确保Connector配置中的keyAlias与keystore里绑定了CA证书的私钥别名一致(此处应为myservername)
  • 若CA提供的是链式证书(包含中间和根),可直接导入链式证书文件到对应别名下,无需单独导入中间和根(单独导入也可,只要服务器证书正确绑定私钥)

内容的提问来源于stack exchange,提问作者jkfe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 02:35:08