SSL 证书检测完全指南

目录

什么是 SSL/TLS

SSL(Secure Sockets Layer)TLS(Transport Layer Security)是用于在互联网上建立加密连接的安全协议。虽然 SSL 已被 TLS 取代,但人们仍习惯称之为 SSL。

当你访问一个 HTTPS 网站时,浏览器和服务器之间的通信会被加密,防止第三方窃听或篡改数据。这对于保护用户隐私和数据安全至关重要。

为什么需要 SSL/TLS

⚠️ HTTP vs HTTPS

HTTP 是明文传输,任何人都可以截获和查看数据。HTTPS 使用 SSL/TLS 加密,保护数据安全。现代浏览器会将 HTTP 网站标记为不安全。

SSL 证书的工作原理

SSL 握手过程

当浏览器访问 HTTPS 网站时,会进行以下步骤:

  1. 客户端问候 - 浏览器发送支持的 TLS 版本和加密套件列表
  2. 服务器问候 - 服务器选择 TLS 版本和加密套件,并发送 SSL 证书
  3. 证书验证 - 浏览器验证证书的有效性(颁发机构、有效期、域名匹配)
  4. 密钥交换 - 双方协商生成会话密钥
  5. 加密通信 - 使用会话密钥加密后续的所有通信

证书链

SSL 证书通常形成一个信任链:

根证书(Root CA)
  └─ 中间证书(Intermediate CA)
      └─ 网站证书(End-entity Certificate)

浏览器内置了受信任的根证书列表。当验证网站证书时,浏览器会沿着证书链向上验证,直到找到受信任的根证书。

证书类型详解

按验证级别分类

1. DV(Domain Validation)- 域名验证证书

验证内容:只验证域名所有权

验证方式:通过邮件、DNS 记录或 HTTP 文件验证

颁发时间:几分钟到几小时

价格:免费(Let's Encrypt)或低价(0-50/年)

适用场景:个人网站、博客、小型企业网站

✅ DV 证书的优势

  • 快速颁发,自动化程度高
  • 成本低,甚至免费
  • 加密强度与其他类型相同
  • 适合大多数网站

2. OV(Organization Validation)- 组织验证证书

验证内容:域名所有权 + 组织身份

验证方式:需要提供企业注册文件、营业执照等

颁发时间:1-3 个工作日

价格:0-200/年

适用场景:企业网站、电商平台

证书信息:证书中包含组织名称,用户可以查看

3. EV(Extended Validation)- 扩展验证证书

验证内容:域名所有权 + 组织身份 + 法律实体验证

验证方式:严格的身份审查,包括电话验证、法律文件等

颁发时间:1-2 周

价格:50-500/年

适用场景:银行、金融机构、大型电商

浏览器显示:部分浏览器会在地址栏显示组织名称(绿色)

⚠️ EV 证书的变化

从 2019 年起,Chrome、Firefox 等浏览器不再在地址栏显示 EV 证书的组织名称。EV 证书的视觉优势已大幅减弱。

按覆盖范围分类

单域名证书

只保护一个域名,如 www.example.com

通配符证书(Wildcard)

保护一个域名及其所有子域名,如 *.example.com

可以保护 www.example.comblog.example.comshop.example.com

多域名证书(SAN/UCC)

一个证书保护多个不同的域名,如 example.comexample.netexample.org

如何检查 SSL 证书

浏览器检查

最简单的方法是使用浏览器:

  1. 访问网站,点击地址栏的锁图标
  2. 查看证书信息:颁发给谁、颁发机构、有效期
  3. 检查证书链是否完整

命令行检查

使用 openssl 命令:

# 查看证书信息
openssl s_client -connect example.com:443 -servername example.com

# 查看证书有效期
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates

# 查看证书颁发机构
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -issuer

在线工具

检查要点

常见 SSL 错误

1. 证书过期

错误信息:NET::ERR_CERT_DATE_INVALID

原因:证书已过期或尚未生效

解决方法:

2. 域名不匹配

错误信息:NET::ERR_CERT_COMMON_NAME_INVALID

原因:证书的域名与访问的域名不匹配

解决方法:

3. 证书链不完整

错误信息:NET::ERR_CERT_AUTHORITY_INVALID

原因:服务器未配置中间证书

解决方法:

# Nginx 配置
ssl_certificate /path/to/fullchain.pem;  # 包含中间证书
ssl_certificate_key /path/to/privkey.pem;

# Apache 配置
SSLCertificateFile /path/to/cert.pem
SSLCertificateKeyFile /path/to/privkey.pem
SSLCertificateChainFile /path/to/chain.pem

4. 自签名证书

错误信息:NET::ERR_CERT_AUTHORITY_INVALID

原因:证书不是由受信任的 CA 颁发

解决方法:

5. 混合内容(Mixed Content)

错误信息:浏览器显示不安全或锁图标带警告

原因:HTTPS 页面加载了 HTTP 资源(图片、CSS、JS)

解决方法:

Let's Encrypt 使用指南

Let's Encrypt是一个免费、自动化、开放的证书颁发机构,由非营利组织 ISRG 运营。它彻底改变了 HTTPS 的普及。

Let's Encrypt 的特点

使用 Certbot 申请证书

1. 安装 Certbot

# Ubuntu/Debian
sudo apt update
sudo apt install certbot python3-certbot-nginx

# CentOS/RHEL
sudo yum install certbot python3-certbot-nginx

2. 申请证书(Nginx)

# 自动配置 Nginx
sudo certbot --nginx -d example.com -d www.example.com

# 只申请证书,手动配置
sudo certbot certonly --nginx -d example.com -d www.example.com

3. 申请通配符证书

# 需要 DNS 验证
sudo certbot certonly --manual --preferred-challenges dns -d example.com -d *.example.com

4. 自动续期

# 测试续期
sudo certbot renew --dry-run

# 设置自动续期(cron)
0 0,12 * * * certbot renew --quiet

使用 acme.sh

acme.sh是另一个流行的 ACME 客户端,纯 Shell 脚本实现,更轻量。

# 安装
curl https://get.acme.sh | sh

# 申请证书
acme.sh --issue -d example.com -d www.example.com --nginx

# 安装证书到 Nginx
acme.sh --install-cert -d example.com \
  --key-file /path/to/privkey.pem \
  --fullchain-file /path/to/fullchain.pem \
  --reloadcmd "systemctl reload nginx"

最佳实践

1. 使用强加密配置

# Nginx 推荐配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

2. 启用 HSTS

HSTS(HTTP Strict Transport Security)强制浏览器使用 HTTPS:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

3. 配置 OCSP Stapling

OCSP Stapling 可以加速证书验证:

ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /path/to/chain.pem;

4. 定期监控证书

5. 使用 CAA 记录

CAA(Certification Authority Authorization)DNS 记录可以限制哪些 CA 可以为你的域名颁发证书:

example.com. CAA 0 issue "letsencrypt.org"
example.com. CAA 0 issuewild "letsencrypt.org"

6. 证书透明度

所有公开信任的证书都会记录在证书透明度日志中。你可以监控自己域名的证书颁发情况,及时发现异常。

🔧 推荐工具

  • SSL Labs - SSL 配置测试
  • crt.sh - 证书透明度查询
  • 301check.com - 重定向检测(包含 TLS 信息)
  • Certbot / acme.sh - 自动化证书管理

总结

SSL/TLS 证书是现代网站的必备配置。关键要点:

如果你需要检查网站的 SSL 证书信息,可以使用我们的 重定向检测工具,它会在检测重定向时显示每一跳的 TLS 证书信息。