现在网站不上 HTTPS,浏览器会直接标"不安全",SEO 也会被降权,部分 API(摄像头、地理位置)在非 HTTPS 下根本用不了。
好消息是:证书早就免费了。这篇讲用 Let's Encrypt 申请免费证书、配置 Nginx、设置自动续期的完整流程。
需要一台带独立公网 IP 的服务器来部署对外网站?财富云计算 提供云服务器;做内网服务、测试环境可选 NAT 型(无独立公网 IP,价格比独立 IP 机型省一半以上)。
一、HTTPS 与证书的常识
三个概念
- HTTP:明文传输,中间人能看到也改得了内容
- HTTPS:HTTP + TLS 加密,防窃听、防篡改、验证身份
- SSL/TLS 证书:由可信机构(CA)签发,证明"这个域名确实属于你"
严格说现在用的都是 TLS,但习惯上还叫 SSL 证书。
证书类型
| 类型 | 验证内容 | 签发速度 | 适用 |
|---|---|---|---|
| DV(域名验证) | 只验证域名控制权 | 几分钟 | 个人站、博客、API |
| OV(组织验证) | 验证企业身份 | 数天 | 企业官网 |
| EV(扩展验证) | 严格验证 | 数周 | 金融、电商 |
Let's Encrypt 提供的是 DV 证书,免费、自动化、90 天有效期。 对个人和绝大多数网站完全够用。
为什么是 90 天
刻意设计:短有效期 + 强制自动续期,比长证书更安全(私钥泄露影响窗口小、促使运维自动化)。所以必须配自动续期。
二、申请前准备
域名已解析到服务器 IP:证书签发时要验证你对域名的控制权
ping example.com # 确认解析到了你的服务器80 端口可访问(HTTP-01 验证方式需要)
- 防火墙放行 80
- 云平台安全组放行 80
- 国内服务器注意:如果域名没备案,80/443 可能被阻断,需要用 DNS-01 方式
- Nginx 已安装并运行
三、安装 Certbot
Ubuntu / Debian
apt update
apt install certbot python3-certbot-nginx -y
certbot --versionCentOS / Rocky
yum install epel-release -y
yum install certbot python3-certbot-nginx -y或者用 snap(版本最新)
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot四、申请证书(Nginx 插件方式,最省事)
前提:已有 Nginx 站点配置且 server_name 写对了域名。
certbot --nginx -d example.com -d www.example.com交互式流程:
Enter email address (used for urgent renewal): you@example.com
Please read the Terms of Service...
(A)gree/(C)ancel: A
Would you like to share your email...: N
Which server blocks would you like to modify? → 选你的站点
Please choose whether to redirect HTTP traffic to HTTPS: 2 (强制跳转)完成后 Certbot 会自动修改 Nginx 配置并 reload。检查:
systemctl status nginx
curl -I https://example.com证书存放位置:
/etc/letsencrypt/live/example.com/
├── cert.pem # 域名证书
├── chain.pem # 中间证书
├── fullchain.pem # cert + chain(Nginx 用这个)
└── privkey.pem # 私钥(绝不能泄露)五、只申请证书,不改配置(certonly)
想自己控制 Nginx 配置时用这个:
# 方式一:webroot(推荐,不用停服务)
certbot certonly --webroot -w /var/www/mysite -d example.com -d www.example.com
# 方式二:standalone(临时占用 80 端口,需要先停 nginx)
systemctl stop nginx
certbot certonly --standalone -d example.com
systemctl start nginx然后自己写配置:
server {
listen 443 ssl http2;
server_name example.com www.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_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
root /var/www/mysite;
index index.html index.php;
}
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}nginx -t && systemctl reload nginx六、通配符证书(DNS-01 验证)
要签 *.example.com 这种通配符,必须用 DNS 验证:
certbot certonly --manual --preferred-challenges dns \
-d example.com -d "*.example.com"它会让你添加一条 TXT 记录:
Please deploy a DNS TXT record under the name:
_acme-challenge.example.com
with the following value:
AbCdEf123456...去域名解析后台添加,等待生效后回车。
验证解析是否生效:
dig -t txt _acme-challenge.example.com +short
# 或
nslookup -type=txt _acme-challenge.example.com通配符证书无法自动续期(除非用支持 API 的 DNS 插件),因为每次都要手动改 DNS。非必要不建议用。
如果你的 DNS 服务商支持 API(阿里云、腾讯云、Cloudflare 等),可以装对应插件实现自动续期:
# 例如 Cloudflare
apt install python3-certbot-dns-cloudflare
# 配置凭据后
certbot certonly --dns-cloudflare --dns-cloudflare-credentials ~/.cf.ini -d "*.example.com"七、自动续期(必须做)
Let's Encrypt 证书 90 天过期。Certbot 安装时通常会自带定时任务,先确认:
systemctl list-timers | grep certbot
# 或者
cat /etc/cron.d/certbot
ls /etc/systemd/system/certbot.timer手动测试续期(不会真的续,只做演练):
certbot renew --dry-run看到 "Congratulations, all simulated renewals succeeded" 就说明配置正确。
手动立即续期:
certbot renew
systemctl reload nginx自己加 crontab(如果没有自带):
crontab -e# 每天凌晨 3 点检查,证书剩余 30 天内才续
0 3 * * * certbot renew --quiet --deploy-hook "systemctl reload nginx"--deploy-hook 只在真正续期成功后才执行 reload,比直接 reload 更合理。
查看证书到期时间:
certbot certificates
# 或
openssl x509 -in /etc/letsencrypt/live/example.com/cert.pem -noout -dates
# 或用 openssl 看域名
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates八、HTTPS 配置优化
一份完整的现代配置
server {
listen 443 ssl;
http2 on; # Nginx 1.25.1+ 写法
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
# 协议
ssl_protocols TLSv1.2 TLSv1.3; # 禁用 TLS 1.0/1.1(已不安全)
ssl_prefer_server_ciphers off;
# 会话复用
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
ssl_session_tickets off;
# HSTS:强制浏览器后续都用 HTTPS(谨慎,先小范围测试)
add_header Strict-Transport-Security "max-age=63072000" always;
# 安全头
add_header X-Content-Type-Options nosniff always;
add_header X-Frame-Options SAMEORIGIN always;
# OCSP Stapling(加快握手)
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 1.1.1.1 valid=300s;
resolver_timeout 5s;
root /var/www/mysite;
index index.html;
}⚠️ HSTS 要小心:一旦浏览器记住了 max-age,在有效期内你的站点必须一直可用 HTTPS,否则用户会被彻底挡在外面。建议先用小值(如 300 秒)测试,确认没问题再加大。在线检测
配完去 SSL Labs 测一下,目标是 A 或 A+。
九、常见问题
1)Connection refused during challenge
80 端口不通。检查:
ss -tulnp | grep :80
ufw status
# 云控制台安全组2)Timeout during connect
域名解析没生效,或解析到了别的 IP:
dig example.com +short
curl -I http://example.com3)unauthorized :: Invalid response
Nginx 配置的 server_name 与申请的域名不一致,或者 certbot --nginx 没能正确识别站点。改用 --webroot 方式。
4)国内服务器 80 端口被阻断
未备案域名无法用 HTTP-01 验证。解决:
- 先完成备案再用 80 端口验证
- 或用 DNS-01 方式(不需要 80 端口,但域名本身要能访问另说)
- 或使用云厂商提供的免费证书(通常支持 DNS 验证)
5)Too many certificates already issued
Let's Encrypt 有速率限制:每个域名每周最多 50 张证书,重复申请(相同的域名集合)每周 5 次。
调试阶段请务必加 --dry-run(用测试环境签发,不计入限额)。
6)续期后证书没更新
certbot renew --force-renewal # 强制续
systemctl reload nginx # 别忘 reload7)多站点共用证书
一个证书可以包含多个域名(SAN):
certbot --nginx -d a.com -d b.com -d c.com或每个站点单独申请(更灵活,推荐)。
十、其他免费证书渠道
| 渠道 | 有效期 | 特点 |
|---|---|---|
| Let's Encrypt | 90 天 | 最主流,自动化程度高 |
| ZeroSSL | 90 天 | 支持 Web 面板管理,certbot 也支持 |
| 云厂商免费证书 | 通常 1 年 | 阿里云/腾讯云各有 20 张免费 DV,适合国内业务 |
| Buypass Go SSL | 180 天 | 挪威 CA,支持 ACME |
云厂商的免费证书适合国内已备案业务(签发快、中文支持、可下载部署到非本平台服务器)。
十一、证书安全检查清单
- [ ] 私钥文件权限 600,不上传代码仓库
- [ ] 禁用 TLS 1.0 / 1.1
- [ ] 开启 HTTP → HTTPS 301 跳转
- [ ] 自动续期已配置并做过
--dry-run测试 - [ ] 有到期监控(证书到期前告警)
- [ ] SSL Labs 评分达到 A 级以上
- [ ] 站内资源(图片、JS、CSS)也都是 HTTPS(否则会有"混合内容"警告)
检查混合内容:打开网站按 F12 看 Console,有 Mixed Content 警告说明还有 HTTP 资源,通常是文章里的旧图片链接。
十二、一句话总结流程
# 1. 装工具
apt install certbot python3-certbot-nginx -y
# 2. 申请(自动改配置)
certbot --nginx -d example.com -d www.example.com
# 3. 验证续期
certbot renew --dry-run
# 4. 确认定时任务存在
systemctl list-timers | grep certbot
# 5. 在线检测
# https://www.ssllabs.com/ssltest/部署对外网站需要带独立公网 IP 的云服务器,财富云计算 提供多种配置可选;如果只是做内网服务、测试环境、游戏服务端,NAT 型云服务器(无独立公网 IP)价格比独立 IP 机型省一半以上,性价比更高。
相关阅读:
- 《Nginx 安装与配置入门》
- 《Nginx 反向代理与多站点配置》
- 《域名解析与 DNS 记录详解》
延伸阅读
- 网站环境怎么选:LNMP 手动 / 宝塔面板 / Docker / 云开发
- 问卷表单系统搭建:SurveyKing / Formbricks,数据自己收
- 图床搭建:Lsky Pro / Lychee,自托管图片托管方案
- 邮件列表搭建:listmonk 自托管 Newsletter,把读者握在自己手里
- 文档站点搭建:MkDocs / VuePress / Docsify,产品文档与技术手册方案
- RSS 阅读器搭建:FreshRSS 自托管,把信息流拿回自己手里
- 短链接服务搭建:Shlink 自托管,链接数据自己掌握
- 网站状态监控页搭建:Uptime Kuma,服务器挂了第一时间知道

[...]装了 SSL 证书只是第一步。真正安全的 HTTPS 站点还要做三件事:HTTP 强制跳转 HTTPS、全站 HSTS、配齐安全响应头。这篇把这几项配置一次讲清,全部 Nginx 配置可直接抄。改完用安全检测工具一测,评分从 C 到 A+。需要云服务器可以看看财富云计算:NAT 型无独立公网 IP,价格比独立 IP 机型省一半以上,一键开服面板,主流游戏快速部署。一、先确认证书装好了本文假设你已经[...]
2026-10-13 回复
[...]# 3. 搜索展现/点击 — 有排名有点击 = SEO 起效新站预期:1–4 周开始收录,3–6 个月有排名。SEO 没效果通常是:时间不够、内容不够、或者技术问题没修。八、常见问题Q:新站多久能被收录?提交 sitemap + 主动推送后,百度几天到两周,Google 几天。没收录先查 robots.txt 和 site:域名。Q:site:域名 查不到任何页面?按顺序查:robots.txt [...]
2026-10-14 回复
[...]# Via / X-Cache-Provider 等平台标识HTTPS 别忘了:CDN 上也要配证书(多数平台免费提供),否则混合内容报错。证书部署见SSL 证书与 HTTPS 部署。四、缓存策略:CDN 的灵魂缓存配错了,要么不生效(全回源,慢)要么更新了用户看不到(缓存旧版)。4.1 按文件类型配 TTL文件类型建议缓存说明图片/字体/视频30 天带 hash 文件名可更长CSS/[...]
2026-10-15 回复
[...]}变量速查:$host 域名、$request_uri 带参数的完整路径、$uri 不含参数的路径。HTTPS 跳转配套证书见SSL 证书与 HTTPS 部署。3.3 目录与文件重写# /user/123 -> /user.php?id=123[...]
2026-10-15 回复
[...]# CPUQuota=300%3. 独立数据盘/目录网站数据库、游戏存档、网盘文件各放各的目录,备份可以分别做,见服务器备份与快照策略。三、端口规划:多服务共存的交通规则NAT 型机器只有一个公网 IP,所有服务靠端口区分。端口分配表是共存方案的宪法,开服前先画好:服务内网端口映射公网端口协议说明SSH22随机高端口TCP改掉 22 防扫描帕鲁游戏821120001UDP游戏主端口帕鲁查询2701[...]
2026-10-18 回复
[...]# 到期自动续(certbot 自带 systemd timer)完整部署见SSL 证书与 HTTPS 部署指南,强制跳转和响应头配置见HTTPS 强制跳转与安全响应头。五、NAT 型建站的三个注意点1. 备案与共享 IP用国内机房 + 域名访问需要备案;共享 IP 下如果别人的站被墙,可能牵连你的站(罕见但存在)。个人站长建议用备案域名 + 正规商家,共享 IP 的管理策略见NAT 共享 IP [...]
2026-10-18 回复
[...]netsh advfirewall firewall add rule name="GameRange" dir=in action=allow protocol=UDP localport=26901-26903完整的 Windows 环境准备(远程桌面连接、运行库安装、SteamCMD 用法、开机自启、8 个常见坑)见:《Windows 云服务器开服通用前置教程》→ htt[...]
2026-10-18 回复
[...]# 看到 HTTP/2 200、证书信息无误即通证书部署更多细节见免费 SSL 证书申请与 HTTPS 部署和HTTPS 强制跳转与安全响应头。五、小程序后台:配置 request 合法域名证书和接口都通了,最后一步:登录 mp.weixin.qq.com → 开发管理 → 开发设置 → 服务器域名在 request 合法域名 填 https://api.yourdomain.com(只填域名,不[...]
2026-10-18 回复
[...]└─ 联系我们 ← 电话、地址、表单、地图文案的常见错误:满屏"引领行业、卓越品质"这种空话。客户只关心"你能解决我什么问题、多少钱、靠不靠谱"。五、性能与安全:上线前 checklist性能(官网打开超过 3 秒,一半访客流失):开页面缓存,动态页面静态化,见PHP-FPM 安装与性能调优图片压缩 + WebP,方法论见网站图片与静态资源优化上 CDN,静态资源走 CDN,见CDN 加速配置[...]
2026-10-18 回复
[...]restart: unless-stoppedGhost(Docker + Nginx 反代):官方镜像 + 443 反代,配置方法同Docker 部署网站实战的套路。四、博客的通用功课不管选哪个平台,这些事都逃不掉:备份——写了三年的博客丢过一次就懂了。数据库 + 附件每日自动备份,异地一份,方案见服务器备份与快照策略。HTTPS——现在没有 SSL 的博客,浏览器直接标"不安全",读者信任打对[...]
2026-10-18 回复
[...]个人中心(订单 / 地址 / 优惠券)四、接支付:最需要谨慎的一步国内自建电商的支付选项:方式资质要求费率说明微信支付企业主体 + 商户号约 0.6% 起需对接口,或用插件支付宝企业/个体户约 0.6% 起同上个人码收款无0仅限小额/熟人场景,风控严PayPal企业主体约 3.9%+做海外用硬性要求:企业主体才能申请微信/支付宝商户号,个人主体基本没戏——注册主体时想清楚全站 HTTPS 是强制的[...]
2026-10-18 回复
[...]}证书用 Let's Encrypt 免费申请,见免费 SSL 证书申请与 HTTPS 部署。反代细节见Nginx 反向代理与多站点配置。DOMAIN 环境变量必须和实际访问地址完全一致(协议 + 域名 + 端口),否则客户端同步会报错——这是自托管 Vaultwarden 第一大坑。四、客户端接入服务端跑起来后,各平台用官方 Bitwarden 客户端,登录时把服务器地址改成你的域名:平台客户端[...]
2026-10-18 回复
[...]}反代细节见Nginx 反向代理与多站点配置,证书见免费 SSL 证书申请与 HTTPS 部署。三、监控项配置:按这个清单加基础四件(每个站长都该有):监控项类型间隔说明网站首页HTTPS60s关键字匹配"你的品牌词",防"能打开但是挂马页"服务器 PingPing60s探活,不通就是机器/网络层出事SSH 端口TCP:2260s服务没挂但 SSH 不通 = 被墙或防火墙抽风数据库端口TCP:33[...]
2026-10-18 回复
[...]}证书见免费 SSL 证书申请与 HTTPS 部署,反通用配置见Nginx 反向代理与多站点配置。三、创建短链:CLI 和 APICLI 建链:# 生成一个随机短码[...]
2026-10-18 回复
[...]}证书见免费 SSL 证书申请与 HTTPS 部署。4. 初始化:访问域名 → 注册第一个账号(注册完可在配置里关掉公开注册)→ 语言选简体中文。三、加订阅源:OPML 一键搬家换阅读器最怕丢订阅。FreshRSS 支持 OPML 导入导出:导入:设置 → 订阅 → 导入 OPML 文件(从其他阅读器导出的)批量发现:直接喂网站首页 URL,FreshRSS 会自动发现 <link rel=[...]
2026-10-18 回复
[...]}反代见Nginx 反向代理与多站点配置,证书见免费 SSL 证书申请与 HTTPS 部署。三、SMTP:发信的发动机listmonk 本身不发信,它调度任务,真正发信靠 SMTP。三条路:方案成本适合注意第三方事务邮件服务(AWS SES、SendCloud、Mailgun)按量,很便宜生产环境首选需域名验证服务器自建 SMTP(Postfix/Exim)服务器成本有运维能力IP 信誉自己养,极[...]
2026-10-18 回复
[...]}反代见Nginx 反向代理与多站点配置,证书见免费 SSL 证书申请与 HTTPS 部署。3. 初始化:访问域名注册管理员 → 新建问卷 → 选模板或从零搭。核心功能:题型:单选、多选、填空、下拉、评分、文件上传、矩阵、NPS逻辑跳转:选 A 跳到第 3 题,选 B 跳到第 5 题——复杂的条件问卷不用拆多份考试模式:限时、随机抽题、防切屏(问卷系统的隐藏技能)数据导出:Excel/CSV,原始[...]
2026-10-18 回复