SSL/TLS 安全配置实战:HTTPS 证书部署与安全强化完整指南

HTTPS 早已是网站的标配,搜索引擎和主流浏览器都会对未加密站点降权甚至直接标记”不安全”。但现实是:很多站长只完成了证书部署这一步,TLS 协议版本、加密套件、HSTS、OCSP Stapling 等安全配置完全缺失,等于”上了锁却没换好锁芯”。本文以 Nginx + Let’s Encrypt 为例,从证书申请到安全强化,完整演示 SSL/TLS 的正确配置姿势。

一、免费证书申请与 Nginx 部署

Let’s Encrypt 提供免费 DV 证书,配合 certbot 工具可以全自动申请和续期。首先安装 certbot:

# Debian/Ubuntu
apt install -y certbot python3-certbot-nginx
# CentOS/RHEL
yum install -y certbot python3-certbot-nginx

执行一条命令即可自动完成证书签发和 Nginx 配置改写:

certbot --nginx -d www.example.com -d example.com --redirect

如果希望手动配置,certbot 也可以只签发证书:

certbot certonly --webroot -w /var/www/html -d www.example.com

签发成功后,在 Nginx 的 server 块中配置证书路径并开启 443 监听:

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

    ssl_certificate     /etc/letsencrypt/live/www.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
}

同时把 80 端口请求 301 跳转到 HTTPS,避免内容重复收录:

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

二、收紧 TLS 协议版本与加密套件

老旧的 TLS 1.0 / 1.1 协议存在严重安全缺陷(如 POODLE、BEAST 攻击),必须禁用。在 http 块中统一配置:

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305;

上面的配置只保留基于 ECDHE 前向加密的高强度套件,且支持 TLS 1.3 的 ChaCha20-Poly1305,兼顾安全性与移动端兼容性。配置完成后,可用 openssl s_client -connect www.example.com:443 -tls1_2 或在线工具(如 SSL Labs)验证评分。

三、开启高级安全特性:HSTS、OCSP Stapling 与会话缓存

HSTS(HTTP 严格传输安全)可以强制浏览器只通过 HTTPS 访问站点,杜绝中间人降级攻击。在 server 块中添加:

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

OCSP Stapling 由服务器主动缓存证书吊销状态,避免浏览器逐个查询 OCSP 服务器,既提速又防隐私泄露:

ssl_stapling on;
ssl_stapling_verify on;
resolver 223.5.5.5 119.29.29.29 valid=300s;
resolver_timeout 5s;

开启会话缓存可以减少重复握手开销,降低 CPU 消耗:

ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;

四、证书自动续期,避免网站突然”掉线”

Let’s Encrypt 证书有效期为 90 天,必须配置自动续期。先测试续期流程:

certbot renew --dry-run

测试通过后添加定时任务,每天自动检查并续期:

# 编辑 crontab
crontab -e
# 添加一行,每天凌晨 3 点执行
0 3 * * * certbot renew --quiet --renew-hook "nginx -s reload"

总结

SSL/TLS 安全配置并不复杂,关键在于”部署证书 + 收紧协议 + 高级特性 + 自动续期”四步都做到位。配置完成后建议用 SSL Labs 在线检测,评分达到 A 以上才算合格。对于没有条件自行管理证书或希望进一步加速的站长,速度网络提供免费 SSL 证书自动部署、智能 HTTPS 加速以及高防 CDN 服务,证书部署与防护一体化完成,还能隐藏源站 IP、抵御 DDoS/CC 攻击,让 HTTPS 站点又快又稳又安全。

给TA打赏
共{{data.count}}人
人已打赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
在线客服
在线客服
热线电话
QQ客服
电子邮箱
suduwangluo