用心打造
VPS知识分享网站

服务器证书无法验证怎么办?一文教你搞定

有时候在浏览器里访问服务器,突然弹出“证书无法验证”或者“您的连接不是私密连接”的警告,心里一万个草泥马都跑出来了:到底哪错了?本期小编带你逐步排查,从根证书到配置细节,让证书验证问题迎刃而解!

服务器证书无法验证怎么办?一文教你搞定

服务器证书无法验证怎么办

一、检查系统和浏览器的根证书

  1. 根证书过期或缺失
    • Windows/macOS:检查系统的证书管理工具(如 certmgr.msc、钥匙串访问),确认是否安装了颁发机构(CA)的根证书。
    • 浏览器:某些浏览器自带证书库,若版本过旧,可能缺少最新根证书。更新浏览器后重试。
  2. 自签名证书
    • 自己给服务器签发的证书(self-signed)不会在内置根证书列表中,需要手动导入到客户端信任列表,否则始终报错。

二、确认证书链是否完整

  1. 查看中间证书
    • 访问 https://your.server.com,在浏览器中点击锁形图标,查看证书路径,确认是否有缺失的中间证书。
  2. 服务器端配置
    • 将中间证书拼接到同一个文件,例如:
      cat server.crt intermediate.crt > fullchain.crt
      
    • 在 Nginx/Apache 中使用 fullchain.crt 而非单独的 server.crt

三、确保证书和私钥匹配

  1. 校验证书与私钥
    openssl x509 -noout -modulus -in server.crt | openssl md5  
    openssl rsa -noout -modulus -in server.key | openssl md5  
    

    两个 MD5 值应一致,否则使用了错误的私钥或证书。

  2. 格式与权限
    • 确认证书和私钥文件编码为 PEM(Base64),不要混用 DER 或 PFX。
    • 检查文件权限,私钥文件权限应设置为 600,防止非 root 用户读取。

四、检查服务器配置

  1. Nginx 示例
    ssl_certificate     /etc/nginx/ssl/fullchain.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;
    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_ciphers         HIGH:!aNULL:!MD5;
    
  2. Apache 示例
    SSLCertificateFile      /etc/httpd/ssl/fullchain.crt
    SSLCertificateKeyFile   /etc/httpd/ssl/server.key
    SSLCertificateChainFile /etc/httpd/ssl/intermediate.crt
    

常见问题解答

  • Q1:浏览器依然报“NET::ERR_CERT_AUTHORITY_INVALID”?
    A:确认中间证书已正确安装,或将自签名根证书导入系统/浏览器信任。
  • Q2:手机访问也验证失败?
    A:手机证书库不同,同样需要手动信任根证书,或使用公共 CA 签发的证书(Let’s Encrypt、ZeroSSL)。
  • Q3:升级到 TLS 1.3 会影响旧设备兼容吗?
    A:部分老设备/浏览器不支持 TLS 1.3,可在配置中同时保留 TLSv1.2。
赞(0)
未经允许不得转载;国外VPS测评网 » 服务器证书无法验证怎么办?一文教你搞定
分享到