当前位置:首页 > 行业动态 > 正文

https验证ssl证书无效

HTTPS验证SSL证书无效可能因证书过期、域名不符、中间证书缺失或配置错误,需检查证书有效性及服务器配置

HTTPS 验证 SSL 证书无效的排查与解决方法

当访问 HTTPS 网站时提示 SSL 证书无效,可能是由多种原因导致的,以下是常见原因、排查方法及解决方案:


常见原因及解决方案

问题类型 具体表现 解决方案
证书已过期 证书有效期已过(如 This certificate has expired 登录证书颁发机构(如 Let’s Encrypt、阿里云等)重新申请证书。
更新服务器上的证书文件。
证书颁发机构(CA)不受信任 浏览器提示“未知颁发机构”或“证书安全警告” 确保使用的是受信任的 CA 颁发的证书(如 Let’s Encrypt、DigiCert 等)。
安装缺失的根证书或中间证书。
域名与证书不匹配 证书绑定的域名与访问的域名不一致(如证书为 example.com,但访问 sub.example.com 申请包含子域名的泛域名证书(如 .example.com)。
检查证书中的 Common Name (CN)Subject Alternative Name (SAN) 是否包含目标域名。
中间证书缺失 浏览器提示“不完整的证书链”或“证书未形成有效链” 从证书服务商下载完整的证书链(包括中间证书)。
将中间证书与主证书合并后上传到服务器。
服务器配置错误 证书文件路径错误、私钥格式不匹配或协议配置错误(如强制 HTTPS 但未重定向) 检查服务器(如 Nginx、Apache)的证书路径配置。
确保私钥与证书匹配,且格式正确(如 PEM/DER)。
自签名证书未被信任 浏览器提示“自签名证书”或“证书不可信” 仅限本地测试环境使用,生产环境需使用受信任的 CA 签发的证书。

详细排查步骤

检查证书有效期

  • 命令行工具
    openssl x509 -in /path/to/certificate.crt -noout -dates

    输出示例:

    notBefore=Apr 15 12:00:00 2023 GMT
    notAfter=Apr 15 12:00:00 2024 GMT
  • 解决方案notAfter 时间早于当前时间,需重新申请证书。

验证证书链完整性

  • 在线工具:使用 SSL Labs 或 Qualys SSL 检查证书链。
  • 手动检查
    1. 下载服务器返回的证书链:
      echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -text -noout
    2. 确认输出中包含中间证书和根证书。

检查域名匹配

  • 浏览器错误提示:查看浏览器地址栏旁的证书详情,确认 Common NameSAN 是否包含当前域名。
  • 解决方案
    • 如果缺少子域名,申请泛域名证书(如 .example.com)。
    • 如果域名拼写错误,修正服务器配置中的域名。

修复服务器配置

  • Nginx 示例
    server {
        listen 443 ssl;
        server_name example.com;
        ssl_certificate /path/to/fullchain.pem;  # 包含中间证书
        ssl_certificate_key /path/to/privkey.key;
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;
    }
  • Apache 示例
    <VirtualHost :443>
        ServerName example.com
        SSLEngine on
        SSLCertificateFile /path/to/certificate.crt
        SSLCertificateKeyFile /path/to/privkey.key
        SSLCertificateChainFile /path/to/chain.pem  # 中间证书
    </VirtualHost>

清除浏览器缓存或更新系统时间

  • 浏览器缓存:尝试使用隐私模式(无痕模式)访问,或手动清除浏览器缓存。
  • 系统时间:确保服务器和客户端的时间同步(可通过 ntp 服务校准)。

相关问题与解答

问题1:SSL 证书续期后浏览器仍提示过期,怎么办?

解答

  1. 确认新证书已正确上传到服务器,并替换旧证书。
  2. 检查服务器是否仍加载旧证书文件(如 Nginx/Apache 配置未刷新)。
  3. 重启服务器或重新加载配置文件(如 nginx -s reload)。
  4. 清除浏览器缓存或尝试其他浏览器访问。

问题2:如何强制浏览器信任自签名证书(仅用于测试)?

解答

  1. 临时绕过验证(不推荐):在浏览器地址栏输入 https://<IP地址> 而非域名,部分浏览器会忽略证书验证。
  2. 导入自签名证书到系统信任库
    • Windows/macOS:将 .crt 文件拖入“信任的根证书颁发机构”。
    • Chrome/Firefox:手动添加例外,永久信任该证书。
  3. 开发环境调试:使用 localhost0.0.1 访问
ssl
0