SSL 证书原理与申请
浏览器地址栏的小锁头,就是 SSL 证书在工作。这篇讲清楚它是什么、怎么免费申请。
一、HTTP vs HTTPS
HTTP:明文传输。你在网站输入的密码、提交的表单,路上 anyone 都能偷看(中间人攻击)。
HTTPS = HTTP + SSL/TLS 加密:传输内容加密,别人截获也看不懂;同时验证服务器身份,防止钓鱼网站冒充。
现在所有网站都应该上 HTTPS,浏览器会对纯 HTTP 网站标”不安全”,影响用户信任和搜索排名。
二、证书是什么
SSL 证书是一份数字身份证,由受信任的机构(CA)签发,包含:
- 域名(这份证书给谁用)
- 公钥(用来加密通信)
- 签发机构和有效期
- CA 的数字签名(证明这份证书是真的)
浏览器内置了各大 CA 的根证书,收到网站证书后验证签名,确认无误才显示小锁头。
三、证书类型
- DV(域名验证):只验证你是域名所有者,免费,个人博客够用
- OV(组织验证):验证企业身份,收费,企业用
- EV(扩展验证):最严格,收费,金融网站用
个人博客用免费的 DV 证书就行,加密效果一样。
四、免费证书来源
- Let’s Encrypt:最常用,免费,90 天有效期,可自动续期
- ZeroSSL:免费,界面友好
- Cloudflare:用 CF 的 CDN 自带免费证书
- 宝塔面板:一键申请 Let’s Encrypt
五、实操:Certbot 申请(Nginx)
1. 安装 Certbot
sudo apt install certbot python3-certbot-nginx -y
2. 申请并自动配置
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
按提示输入邮箱(用于过期提醒),同意服务条款,选择是否强制 HTTPS(选是)。
Certbot 会自动:验证域名所有权 → 下载证书 → 修改 Nginx 配置 → 重载 Nginx。
3. 验证
浏览器打开 https://yourdomain.com,小锁头出现。也可以命令行验证:
curl -vI https://yourdomain.com 2>&1 | grep -i "SSL certificate"
4. 自动续期
Let’s Encrypt 证书 90 天过期,Certbot 已设置 systemd 定时器自动续:
sudo systemctl status certbot.timer # 手动测试续期 sudo certbot renew --dry-run
六、证书文件位置
/etc/letsencrypt/live/yourdomain.com/ ├── fullchain.pem # 证书链(发给浏览器) ├── privkey.pem # 私钥(保密!) ├── cert.pem # 证书本体 └── chain.pem # 中间证书
privkey.pem 绝不能泄露,谁拿到它谁就能冒充你的网站。
七、常见问题
- 申请失败:确认域名已解析到这台服务器(A 记录),80 端口开放
- mixed content 警告:页面里混了 http 资源,改成 https 或相对路径
- 证书过期:检查 certbot.timer 是否运行,手动跑 renew
本文为杰哥的折腾笔记原创教程,转载请注明出处。
