配置有效SSL证书后Chrome仍显示Tomcat站点不安全是什么原因?
问题原因及解决方法
核心原因分类
- TLS/SSL协议配置错误:你的Connector配置中
sslProtocol="SSL"使用了已经被所有现代浏览器废弃的SSL协议,这类不安全协议会直接触发安全警告,哪怕证书本身合法。 - 证书信任链缺失:如果你的证书是自签名证书、内部CA签发的证书,没有将对应的根CA证书导入到浏览器/设备的受信任根证书存储中,浏览器就会判定证书不受信任。你在证书详情中看到的「有效」仅代表证书格式、有效期合法,不代表处于浏览器的信任链中。
- 证书匹配性不符:如果你访问的域名/IP和证书签发的主体(CN)、主体备用名称(SAN)不匹配,比如用
localhost访问但证书仅签发了正式域名,也会触发不安全提示。 - 密钥库证书链不完整:如果
keystoreFile对应的密钥库中仅存储了站点证书,没有附带中级CA证书,浏览器无法完成完整的信任链校验,也会出现该错误。 - Spring Security混合资源问题:如果你的页面中加载了HTTP协议的静态资源(脚本、样式、图片等),哪怕站点本身走HTTPS协议,浏览器也会标记为不安全,你可以在浏览器开发者工具控制台看到混合内容的相关报错。
对应修复步骤
- 修改
server.xml中的Connector配置,替换老旧协议配置:
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" sslEnabledProtocols="TLSv1.2,TLSv1.3" keystoreFile="path" keystorePass="password" />
- 确认访问站点的地址和证书签发的域名/IP完全一致,不要使用IP、非正式域名访问和证书不匹配的站点。
- 如果使用自签名/内部CA证书,将对应的根CA证书导入到当前设备的受信任根证书存储中;公网业务建议使用公网可信CA签发的证书。
- 用JDK自带的keytool命令检查密钥库的证书链是否完整:
keytool -list -v -keystore 你的密钥库文件路径 - 检查Spring Security配置,添加响应头自动升级HTTP请求为HTTPS,避免混合内容问题:
// Spring Security配置类中添加 http.headers().contentSecurityPolicy("upgrade-insecure-requests");
内容的提问来源于stack exchange,提问作者arielBodyLotion
相关产品推荐
相关产品推荐

