网站HTTPS/SSL免费证书完整教程:从申请、部署到强制跳转一次讲清


温馨提示:本文为读者投稿的实用技术内容,操作前请先做好数据备份。

"你的连接不是安全连接","此网站不安全"——这种浏览器警告,足以让访客在打开你网站的下一秒就关掉。今天这篇,我从零开始,把 HTTPS 这件事彻底讲明白:SSL 证书是什么、为什么必须装、免费的怎么申请,以及如何在最常见的 Nginx 上部署并强制跳转。

很多新手以为 HTTPS 是"技术门槛高、还要花钱"的事,其实正好相反:现在主流平台都能免费拿到证书,配置也远比想象中简单。读完你不仅能给自己的站点加密,还能懂为什么大厂都强制 HTTPS。

先弄懂:HTTPS 到底在保护什么

HTTPS = HTTP + SSL/TLS,本质是在原本"明文传输"的 HTTP 外面,加了一层加密和身份验证。它保护的是三件事:

1. 机密性:数据加密传输,防止被中间人偷看(比如你在表单里填的信息、登录密码)。

2. 完整性:数据在传输中若被篡改,双方都能发现。

3. 身份验证:通过数字证书,确认你连接的确实是目标网站,而不是伪装的钓鱼站。

一句话:没有 HTTPS 的网站,相当于在路由器/运营商层层转发的公网上"裸奔",用户名密码、评论、支付信息都可能是透明的。

SSL 证书的本质:需要"独立 IP 或域名验证"的信任背书

所谓 SSL 证书,就是由可信机构(CA)签发的一份"数字身份证",里面包含了你的域名、公钥和签发机构签名。浏览器之所以信任它,是因为证书链最终追溯到浏览器内置信任的根证书。

对于个人建站,不需要买几百上千的商业证书。最主流的免费方案是 Let's Encrypt,由非营利机构运营,证书有效期 90 天,配合自动续期即可长期免费使用。Caddy、宝塔面板等也内置了自动申请免费证书的能力。

方案对比:Let's Encrypt、Caddy 与面板

选择哪个工具主要看你习惯命令行还是面板:

• Let's Encrypt + Certbot:适用 Nginx/Apache,最通用,一条命令自动申请并续期。适合习惯命令行的用户。

• Caddy:开箱即用,"反向代理 + 自动 HTTPS"合并,申请、配置、续期全自动,对新手最友好。

• 宝塔面板:图形界面里点几下即可申请 Let's Encrypt 证书并强制 HTTPS,适合不想碰命令行的站长。

下面我分别演示 Certbot 和 Caddy 两条主流路径,你选顺手的用。

方式一:用 Certbot 给你的 Nginx 免费签发证书

假设你已经有一个正常运行、且能通过域名访问的 Nginx 站点。先用包管理器安装 Certbot 的 Nginx 插件(Ubuntu/Debian 示例):

sudo apt update

sudo apt install -y certbot python3-certbot-nginx

然后一条命令完成申请 + 自动改 Nginx 配置:

sudo certbot --nginx -d example.com -d www.example.com

Certbot 会自动验证域名所有权(HTTP 校验),签发证书,并为你把网站配置改成 HTTPS。申请成功后,把证书信息记下来:

• 证书文件:/etc/letsencrypt/live/example.com/fullchain.pem

• 私钥文件:/etc/letsencrypt/live/example.com/privkey.pem

测试自动续期是否正常:

sudo certbot renew --dry-run

配合系统定时任务,证书到期前会自动续期,你几乎不用再操心。

手动配置 Nginx 开启 HTTPS(如果 certbot 没帮你改)

如果你想自己掌控配置,可以手动改 Nginx 的 server 块,把 443 端口监听起来并指向证书:

server {

listen 443 ssl http2;

server_name 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;

root /var/www/html;

index index.php index.html;

# ...其余站点配置

}

改完记得测试配置并重载:

sudo nginx -t

sudo systemctl reload nginx

强制 HTTPS:让所有 HTTP 请求跳转到加密链接

证书配好只是第一步,还必须把所有访问强制导到 HTTPS,否则访客输入 http:// 仍然走明文。在 Nginx 里加一个 80 端口的 server 块做 301 跳转:

server {

listen 80;

server_name example.com;

return 301 https://$host$request_uri;

}

这样任何 HTTP 请求都会被 301 重定向到对应的 HTTPS 地址,浏览器地址栏会一直显示小锁。

方式二(更省心):Caddy 一行语法自动 HTTPS

如果你不想折腾 Nginx 的证书配置,Caddy 是绝佳选择。它自动申请并管理 Let's Encrypt 证书,配置里只需一行:

example.com {

root * /srv/www

file_server

}

Caddy 启动后会自动完成 HTTPS:申请证书、配置、自动续期全都不用你管。对于个人站和中小业务,这几乎是"最省心的 HTTPS 方案",强烈推荐给怕麻烦的朋友。

几件容易忽略但很重要的事

1. 混合内容:页面里若还有 http:// 的图片、JS、CSS 引用,浏览器会拦截并提示不安全。检查并全部改成 https 或相对路径。

2. 证书到期:Let's Encrypt 只有 90 天,务必确保自动续期任务正常,否则到期重新变回"不安全"。

3. HTTP/2:开启 https 后用 http2 协议能明显提速,Nginx 在 listen 后加 http2 即可。

4. 中文站点建议同时做好 CDN 的 HTTPS 回源,避免 CDN 与源站证书不一致导致报错。

结语

给网站装上 HTTPS,成本几乎为零,收益却实实在在:访客信任度、搜索排序权重、数据安全都能得到明显提升。从今天起,别再让访客看到"连接不安全"的红色警告。

选 Caddy 图省心,选 Certbot + Nginx 图可定制,选宝塔图形化最直观——无论哪条路,只要把"申请、部署、强制跳转、自动续期"四步做完,你的网站就算正式迈入安全时代了。


手机扫码阅读

微信或手机浏览器扫一扫,随时随地随心阅读与分享

新手建站全流程:从域名注册、服务器选择到解析上线的完整路线图

Docker入门到容器化建站实战:一条命令跑起网站与数据库

评 论