现在浏览器对 http 站点直接标“不安全”,用户一看到那个感叹号,信任感先掉一半。给网站加上 HTTPS 已经不是加分项,是基本功。好消息是证书可以免费拿,部署也不复杂。下面从申请到部署走一遍,新手照着做半小时能搞定。
一、先搞清楚证书的类型和去哪拿
个人和中小站点用 DV(域名验证)证书足够,验证的只是“你控制这个域名”,不验证公司身份,签发快、免费。免费来源最常用的是 Let's Encrypt,通过 certbot 工具自动签发,有效期 90 天但能设自动续期。付费证书在担保额度和售后上更强,普通官网用免费的完全够。
如果你用宝塔面板,面板里“SSL”那一栏直接对接了 Let's Encrypt,点几下填域名就能申请,比命令行省事。下面也给你命令行的路子,方便没有面板的场景。
二、申请证书:生成请求与自动签发
命令行方式,先装 certbot,再对域名签发。下面这条命令会自己完成域名验证(默认用 webroot 或 standalone 方式)、把证书放到 /etc/letsencrypt 下。它解决的是“拿到一份可信的证书文件”这件事,后续部署要用到里面的 fullchain 和 privkey。
# 用 certbot 为域名申请 Let's Encrypt 免费证书(需先装 certbot)
# 方式A:站点已跑在 Nginx,用 webroot 验证
certbot certonly --webroot -w /www/wwwroot/example.com \
-d example.com -d www.example.com
# 方式B:临时停掉 Web 服务用 standalone 验证
certbot certonly --standalone -d example.com -d www.example.com
# 申请成功后证书在 /etc/letsencrypt/live/example.com/
# fullchain.pem 是证书链,privkey.pem 是私钥
跑完看什么:命令行最后提示“Congratulations”就成功了;若报“验证失败”,多半是 80 端口没开或域名没解析到这台机器,先回去把解析和防火墙确认好再跑。证书目录里确认有 fullchain.pem 和 privkey.pem 两个文件。
三、部署到 Nginx,开启 HTTPS
拿到证书后,要在 Web 服务里“挂”上去,告诉它用哪个证书、监听 443 端口。下面这段是 Nginx 的 HTTPS 配置片段,把证书路径和域名填好就能用。
# /etc/nginx/conf.d/example_ssl.conf HTTPS 站点配置
server {
listen 443 ssl;
server_name www.example.com example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_session_cache shared:SSL:10m;
root /www/wwwroot/example.com;
index index.php index.html;
}
# 80 端口统一跳 443,避免用户用 http 进来
server {
listen 80;
server_name www.example.com example.com;
return 301 https://$host$request_uri;
}
改完执行 nginx -t 检查语法,再 systemctl reload nginx。这时用 https 访问域名,地址栏应出现锁形图标。最后那一段 80 跳 443 很关键,否则用户手动输 http 还是走明文。
四、设自动续期,别等过期
Let's Encrypt 证书 90 天就过期,手动续太容易忘。certbot 装好时会写一个定时任务,但你要确认它真在跑:执行一次模拟续期,看是否成功。也可以自己加一条 crontab,每月跑一次 renew。
下面这条命令模拟续期(不真改证书),用来验证自动续期链路通不通。它干什么用——确认续期机制可用,避免哪天证书悄悄过期;要改哪里——基本不用改,certbot 自带路径;跑完看什么——输出“successfully”说明续期链路正常,若报错就要查定时任务是否生效。
# 测试证书自动续期链路(dry-run 不真正更新)
certbot renew --dry-run
# 确认有定时任务(Debian/Ubuntu 通常已自动写入)
systemctl list-timers | grep certbot
部署完别急着庆祝,打开浏览器用 https 访问,再点锁标看证书详情,确认颁发者是 Let's Encrypt、有效期正确。把续期跑通,这套 HTTPS 才算真正落地。
相关阅读:
A5创业网 版权所有