从零开始配置 HTTPS:一次完整的备案与部署实践
记录一次完整的 ICP 备案、公安备案和 HTTPS 配置过程,包含踩坑经验和解决方案
---
"您的 ICP 备案申请已通过审核。"
收到这条短信的时候,我知道这个折腾了几天的网站终于可以正式见人了。但事情还没完——ICP 备案只是第一步,后面还有公安备案、HTTPS 配置、域名解析等一系列事情等着我。
如果你也在准备给自己的网站配 HTTPS,可能会遇到不少坑。这篇文章记录我从备案到部署的完整过程,希望能帮你少走弯路。
前置知识
在开始之前,你需要准备:
第一步:ICP 备案
什么是 ICP 备案
ICP 备案是工信部要求的,所有在中国大陆境内运营的网站都必须完成的备案。简单说就是告诉政府:"这个网站是我开的,出了事找我"。
备案流程
我的备案号
粤ICP备2026032277号
这个备案号必须放在网站页脚,并链接到工信部查询页面:
<a href="https://beian.miit.gov.cn/" target="_blank">粤ICP备2026032277号</a>
注意: 备案号要在收到短信后才能使用,别提前放上去。
第二步:公安联网备案
和 ICP 备案的区别
很多人(包括我)以为 ICP 备案完就结束了,其实还有一个公安联网备案。这是公安部要求的,和 ICP 备案是两个独立的流程。
关键区别: | 项目 | ICP 备案 | 公安备案 | |------|---------|---------| | 主管部门 | 工信部 | 公安部 | | 办理时间 | 网站开通前 | 网站开通后 30 日内 | | 办理平台 | 云服务商代提交 | 全国互联网安全管理服务平台 | | 展示要求 | 页脚展示备案号 | 页脚展示公安备案图标 |
公安备案流程
我的公安备案数据码
ac41ac194063ebd6020fa3c460be1d08
这个数据码会生成一个公安备案图标,也要放在网站页脚。
第三步:域名解析
配置 DNS
在域名服务商的控制台添加解析记录:
类型:A 主机记录:@(或 www) 记录值:你的服务器 IP TTL:600(默认)
验证解析
ping yourdomain.com
应该返回你的服务器 IP
第四步:Nginx 反向代理
为什么用 Nginx
我的 Halo 博客运行在 8090 端口,但用户访问的应该是标准的 80/443 端口。Nginx 可以做反向代理,把用户请求转发到后端应用。
Nginx 配置
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
# 强制跳转到 HTTPS(配置完 SSL 后启用)
# return 301 https://$server_name$request_uri;
location / {
proxy_pass http://127.0.0.1:8090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
测试配置
# 检查语法
sudo nginx -t重载配置
sudo nginx -s reload
第五步:HTTPS 配置
申请免费证书
用 Certbot 申请 Let's Encrypt 证书:
# 安装 Certbot
sudo apt install certbot python3-certbot-nginx自动申请并配置
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
Certbot 会自动:
验证 HTTPS
访问 https://yourdomain.com,浏览器应该显示安全锁标志。
强制跳转 HTTPS
在 Nginx 配置中添加:
server {
listen 80;
server_name yourdomain.com;
return 301 https://$server_name$request_uri;
}
第六步:页脚配置
Halo 博客页脚设置
登录 Halo 后台,在主题设置中找到页脚配置,添加:
<div class="footer-beian">
<a href="https://beian.miit.gov.cn/" target="_blank">粤ICP备2026032277号</a>
<a href="https://beian.mps.gov.cn/" target="_blank">
<img src="https://beian.mps.gov.cn/img/logo01.gif" style="vertical-align: middle; margin-left: 10px;">
粤公网安备 44030002000001号
</a>
</div>
注意: 公安备案号要等审核通过后才能获得,先用占位符。
踩过的坑
1. 域名是必须的
一开始我想用 IP 地址直接访问,结果发现备案必须用域名。ICP 备案、公安备案都要求填写域名,没有域名寸步难行。
解决方案: 先买个域名(腾讯云/阿里云,几十块一年),完成实名认证后再开始备案流程。
2. 两个备案不要混淆
我一开始以为 ICP 备案完就结束了,结果收到公安备案的通知才知道还有第二步。两个备案的办理平台、所需材料、展示要求都不一样。
建议: 把两个备案当成独立的项目来管理,分别记录进度和结果。
3. HTTPS 证书续期
Let's Encrypt 证书有效期只有 90 天,需要定期续期。Certbot 会自动设置续期任务,但最好手动测试一下:
sudo certbot renew --dry-run
4. Nginx 配置优先级
Nginx 会按顺序匹配 server 块,如果配置了多个域名,注意 server_name 的优先级。可以用 default_server 指定默认配置。
最终效果
完成所有配置后,你的网站应该:
总结
整个流程走下来,最大的感受是:备案其实没那么复杂,但需要耐心。
ICP 备案等审核,公安备案填表格,HTTPS 配置一条命令。每一步都有明确的指引,按部就班就能完成。
如果你也在做类似的事情,我的建议是:
这样安排可以最大化并行,节省时间。
祝你的网站早日上线!🎉
---
本文基于内部对话总结生成,已进行脱敏处理。
原文来源:chat-index/summaries/website-setup-summary.md