此站点的连接不安全怎么办?SSL证书错误原因与解决方法
浏览器提示“此站点的连接不安全”,不一定意味着SSL证书本身有问题。需要先看浏览器给出的具体错误,例如证书过期、域名不匹配、证书不受信任,还是网站仍然通过 HTTP 访问。
如果网站已经安装SSL证书,但浏览器仍提示不安全,可以按照“访问协议 → 证书有效期 → 域名 → 证书链 → 页面资源 → TLS配置”的顺序排查,一般能够较快定位问题。
为什么会提示“此站点的连接不安全”?
常见原因主要有以下几类。
1. 网站仍然使用HTTP访问
如果访问地址是:
http://www.example.com
而不是:
https://www.example.com
那么浏览器无法通过HTTPS提供的加密连接保护网页通信。
这种情况下,需要先在服务器部署SSL证书,然后将HTTP请求重定向到HTTPS。
例如Nginx可以配置:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
配置完成后测试:
nginx -t
确认没有错误后重新加载Nginx。
2. SSL证书已经过期
SSL/TLS证书具有明确的有效期,并不是申请一次就可以永久使用。
如果证书的 Not Before 和 Not After 时间范围不包含当前时间,浏览器就会认为证书无效。
可以使用OpenSSL检查:
openssl s_client -connect www.example.com:443 -servername www.example.com 2>/dev/null | openssl x509 -noout -dates
返回结果类似:
notBefore=Aug 01 00:00:00 2026 GMT
notAfter=Oct 30 23:59:59 2026 GMT
重点查看 notAfter,确认当前证书是否已经到期。
如果已经过期,需要重新申请或续期证书,并将新证书部署到服务器。
3. 证书域名与访问域名不一致
这是非常常见的证书错误。
例如证书只包含:
www.example.com
但用户访问:
example.com
如果 example.com 没有出现在证书的SAN(Subject Alternative Name)中,就会发生域名不匹配。
同样需要注意通配符证书的匹配范围。
例如:
*.example.com
可以匹配:
www.example.com
api.example.com
mail.example.com
但不能匹配:
example.com
a.b.example.com
因此申请证书时,需要确认实际使用的域名是否都包含在证书中。
4. 服务器没有正确安装中间证书
有些情况下,服务器证书本身没有问题,但服务器只发送了站点证书,没有发送完整的中间证书链。
客户端收到证书后无法构建完整的信任链,就可能出现:
- 证书不受信任
ERR_CERT_AUTHORITY_INVALIDunable to verify the first certificate- 证书链不完整
等错误。
可以使用OpenSSL查看服务器实际发送的证书:
openssl s_client -connect www.example.com:443 \
-servername www.example.com \
-showcerts
如果使用Nginx,ssl_certificate一般应该配置包含服务器证书 + 中间证书的完整证书链文件,而私钥单独配置:
ssl_certificate /etc/nginx/ssl/fullchain.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
证书链的顺序也不能弄反。
5. 网页存在混合内容
如果网页本身通过HTTPS加载,但页面中仍然引用:
http://example.com/image.jpg
http://example.com/style.css
http://example.com/script.js
就可能产生混合内容(Mixed Content)。
尤其是JavaScript、iframe等主动内容,现代浏览器可能直接阻止加载。
排查方法很简单:
- 打开网站;
- 按
F12; - 打开 Console;
- 搜索
Mixed Content; - 找到仍然使用HTTP的资源。
将这些资源改成:
https://example.com/...
或者使用站内相对路径。
如果网站资源本身已经支持HTTPS,也可以考虑:
Content-Security-Policy: upgrade-insecure-requests
但这只是辅助措施,不能替代对HTTP资源的实际检查。
6. TLS协议或加密套件配置过旧
如果证书有效、域名也正确,但浏览器仍无法建立HTTPS连接,还需要检查服务器的TLS配置。
对于目前的公网网站,一般建议至少支持:
TLS 1.2
TLS 1.3
同时关闭已经废弃或不建议继续使用的旧协议,例如SSLv3、TLS 1.0和TLS 1.1。
Nginx示例:
ssl_protocols TLSv1.2 TLSv1.3;
需要注意的是,TLS协议问题与SSL证书本身是两个不同层面的问题。
证书有效,并不代表服务器TLS配置一定正确。
怎么快速判断到底是哪一个问题?
不要一看到“连接不安全”就重新申请证书。
可以按照下面的顺序检查:
| 排查项目 | 重点检查内容 |
|---|---|
| 访问协议 | 是否使用HTTPS |
| 证书有效期 | notAfter是否已经过期 |
| 域名 | 当前访问域名是否存在于SAN |
| 证书链 | 是否部署完整中间证书 |
| 私钥 | 证书与私钥是否匹配 |
| 页面资源 | 是否存在HTTP混合内容 |
| TLS协议 | 是否支持TLS 1.2/1.3 |
| SNI | 多站点服务器是否返回了正确证书 |
如果是Linux服务器,还可以直接使用:
openssl s_client -connect www.example.com:443 \
-servername www.example.com \
-showcerts
这个命令可以帮助检查服务器实际返回的证书和TLS连接情况。
浏览器已经显示HTTPS,为什么还是“不安全”?
这种情况尤其容易误判。
HTTPS ≠ 证书一定正确。
HTTPS只是表示浏览器正在尝试通过TLS建立加密连接。最终是否被浏览器信任,还取决于:
- 证书是否在有效期内;
- 域名是否匹配;
- 签发CA是否受信;
- 证书链是否完整;
- 签名算法和密钥参数是否符合客户端要求;
- TLS连接是否能够正常建立。
所以排查时不要只看地址栏有没有 https://,应该进一步查看浏览器显示的具体证书错误。
如何检查SSL证书是否安装正确?
可以使用SSL Server Test等工具对公网服务器进行检测,也可以直接使用OpenSSL检查。
如果只是想快速确认网站证书,可以先执行:
openssl s_client -connect www.example.com:443 -servername www.example.com
如果需要进一步判断证书域名、有效期和证书链,可以查看:
openssl s_client -connect www.example.com:443 \
-servername www.example.com \
-showcerts
对于生产环境,建议同时检查服务器配置和浏览器实际访问结果,而不是只看服务器上的证书文件。
常见问题 FAQ
Q:SSL证书安装成功了,为什么浏览器还是提示不安全?
A: 优先检查证书是否过期、访问域名是否包含在SAN中,以及服务器是否正确部署了中间证书。如果这些都正常,再检查页面是否存在HTTP混合内容。
Q:SSL证书过期后需要重新申请吗?
A: 可以根据CA和证书产品的续期机制进行续期或重新签发。重新签发时应确认新的证书与服务器上的私钥和CSR对应。
Q:有HTTPS就一定安全吗?
A: 不一定。HTTPS负责建立TLS加密连接,但证书配置、TLS版本、证书链和网站自身的安全配置仍然需要正确设置。
Q:怎么最快判断SSL证书到底哪里出了问题?
A: 先看浏览器具体错误代码,再使用 openssl s_client 检查服务器实际返回的证书和证书链。不要仅根据“连接不安全”这几个字判断故障原因。



京公网安备11010502031690号
网站经营企业工商营业执照
















