HTTPS 已成为网站标配。Google Chrome 会将 HTTP 网站标记为「不安全」,百度/Google 搜索排名也优先展示 HTTPS 网站。本文详细介绍 SSL 证书申请和配置的完整流程。

一、SSL证书类型解析

SSL证书按验证级别分为三类:

类型 验证方式 颁发时间 适用场景 价格
DV(域名验证) 验证域名所有权 几分钟 个人博客/小站 免费-$50/年
OV(组织验证) 验证企业身份 1-3天 企业官网 $100-$500/年
EV(扩展验证) 严格企业验证 3-7天 金融/电商 $500+/年

推荐:个人站长和小型企业站直接使用免费 DV 证书(Let's Encrypt)即可。

二、Let's Encrypt 免费SSL证书申请

Let's Encrypt 是全球最大的免费 SSL 证书颁发机构,证书有效期90天,支持自动续期。

2.1 宝塔面板一键申请(最简单)

  1. 宝塔面板 → 网站 → 找到你的站点 → 设置
  2. 点击「SSL」选项卡
  3. 选择「Let's Encrypt」
  4. 勾选域名,填写邮箱
  5. 点击「申请」按钮
  6. 申请成功后,开启「强制HTTPS」

宝塔会自动设置每 60 天续期,无需手动操作。

2.2 使用 Certbot 命令行申请

如果服务器没有宝塔面板,可以用 Certbot 工具:

# 安装 Certbot(Ubuntu/Debian)
apt install certbot python3-certbot-nginx -y

# 申请证书(Nginx)
certbot --nginx -d yourdomain.com -d www.yourdomain.com

# 申请证书(Apache)
certbot --apache -d yourdomain.com -d www.yourdomain.com

按提示输入邮箱,同意条款,证书会自动安装并配置。

2.3 手动 DNS 验证申请

如果服务器 80 端口无法访问(如内网服务器),可以用 DNS 验证:

certbot certonly --manual --preferred-challenges dns -d yourdomain.com

按提示在 DNS 添加一条 TXT 记录,验证通过后证书会保存在 /etc/letsencrypt/live/yourdomain.com/

三、Nginx 手动配置 SSL

如果证书文件已准备好,手动配置 Nginx:

server {
    listen 443 ssl http2;
    server_name yourdomain.com www.yourdomain.com;

    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;

    # SSL 优化配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
    ssl_prefer_server_ciphers off;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;

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

    root /www/wwwroot/yourdomain.com;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }
}

强制 HTTPS 跳转

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    return 301 https://$host$request_uri;
}

四、Apache 手动配置 SSL

<VirtualHost *:443>
    ServerName yourdomain.com
    DocumentRoot /var/www/html

    SSLEngine on
    SSLCertificateFile /path/to/cert.pem
    SSLCertificateKeyFile /path/to/privkey.pem
    SSLCertificateChainFile /path/to/chain.pem

    <Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

强制 HTTPS(.htaccess)

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

五、Cloudflare 灵活SSL(适合无服务器权限)

如果无法修改服务器配置,可以使用 Cloudflare 的「灵活 SSL」:

  1. 将域名 DNS 托管到 Cloudflare
  2. SSL/TLS → 加密模式 → 选择「灵活」
  3. 开启「始终使用 HTTPS」

这样用户到 Cloudflare 走 HTTPS,Cloudflare 到源站走 HTTP。

⚠️ 缺点:源站到 Cloudflare 之间未加密,安全性较低,仅适合临时方案。

六、SSL证书续期

6.1 Certbot 自动续期测试

# 测试续期(不实际续期)
certbot renew --dry-run

# 手动续期
certbot renew

Certbot 安装后会自动添加定时任务,通常每天检查两次。

6.2 宝塔面板续期

宝塔面板申请的 Let's Encrypt 证书会自动续期。如需手动续期:网站设置 → SSL → Let's Encrypt → 点击「续签」。

七、常见问题排查

Q:证书申请失败怎么办?

  • 检查 80 端口是否放行
  • 确认域名已正确解析到服务器 IP
  • 检查 Nginx/Apache 配置是否正确

Q:浏览器提示证书不安全?

  • 检查证书链是否完整(fullchain.pem 包含中间证书)
  • 确认域名与证书域名一致
  • 检查系统时间是否正确

Q:混合内容警告?

  • 检查页面中是否有 http:// 资源引用
  • WordPress 后台设置 → 常规 → WordPress地址和站点地址都改为 https://
  • 使用「Better Search Replace」插件批量替换数据库中的 http:// 为 https://

Q:移动端访问慢?

  • 考虑启用 HTTP/2 或 HTTP/3(QUIC)
  • 检查证书是否使用了 ECC 算法(速度更快)

八、SSL配置检测工具

目标评分:SSL Labs A 或 A+

总结

SSL证书配置总结:

  • 个人站:Let's Encrypt 免费 DV 证书 + 宝塔一键申请
  • 企业站:OV证书或付费 DV 证书
  • 配置后开启强制 HTTPS + HSTS
  • 定期检查证书到期时间

有问题欢迎评论区留言。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。