你有没有注意到,现在打开网页时,浏览器地址栏左边那个小锁图标?那代表这个网站用了 HTTPS,数据更安全。如果你自己搭了个网站,比如博客或者后台管理系统,想让它也显示这个小绿锁,就得给主机配置SSL证书。别被名字吓到,其实没那么复杂。
为什么需要SSL证书?
简单说,SSL证书就是让网站从HTTP升级到HTTPS的关键。没有它,用户提交的密码、表单内容都是明文传输,中间被人截获也没法发现。加了SSL之后,数据会被加密,哪怕被截走也看不懂。而且现在很多浏览器会把非HTTPS的网站标成“不安全”,影响用户体验。
获取免费SSL证书(以Let's Encrypt为例)
以前买SSL证书要花钱,现在有Let's Encrypt这种公益项目,提供免费证书。最常用的工具是Certbot,支持主流系统和Web服务器。
比如你在用Ubuntu系统和Nginx,可以这样安装Certbot:
sudo apt update
sudo apt install certbot python3-certbot-nginx
装好后直接运行下面命令,Certbot会自动检测Nginx配置,帮你申请并部署证书:
sudo certbot --nginx -d yourdomain.com
过程中会让你填邮箱、同意协议,完成后刷新网站,地址栏就会出现小绿锁了。
手动配置证书文件(适用于其他环境)
有些主机环境不支持自动部署,就得手动操作。申请完证书后,你会拿到两个文件:
fullchain.pem(公钥)和 privkey.pem(私钥)。
以Nginx为例,编辑你的站点配置文件:
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
root /var/www/html;
index index.html;
}
改完重启Nginx:sudo systemctl reload nginx,再访问域名就走HTTPS了。
别忘了HTTP自动跳转HTTPS
虽然能访问HTTPS了,但用户可能还是习惯输www开头的地址。为了避免他们误入不安全的HTTP页面,加个强制跳转:
server {
listen 80;
server_name yourdomain.com;
return 301 https://$host$request_uri;
}
这样不管用户怎么输,都会自动跳到加密版本。
证书有效期和自动续期
Let's Encrypt的证书只有90天有效期,但可以自动续。Certbot自带续期功能,你可以加个定时任务:
sudo crontab -e
添加一行:
0 12 * * * /usr/bin/certbot renew --quiet
意思是每天中午12点检查一次,快过期的证书会自动更新。只要域名解析不变,基本不用再管。
如果哪天搬家换服务器,记得把证书文件和私钥一起迁移,不然HTTPS会失效。建议一开始就做好备份。