HTTPS已经成为网站的标配,浏览器会标记HTTP网站为"不安全"。这篇教程教你免费申请SSL证书,让网站支持HTTPS。
一、什么是SSL证书
SSL证书(Secure Sockets Layer)是一种数字证书,用于加密浏览器和服务器之间的数据传输,防止数据被窃听和篡改。安装SSL证书后,网站地址会从 http:// 变成 https://,浏览器地址栏显示小锁图标。
| HTTP | HTTPS | |
|---|---|---|
| 传输方式 | 明文传输,可被窃听 | 加密传输,安全 |
| 端口 | 80 | 443 |
| 浏览器标记 | "不安全"警告 | 小锁图标 |
| SEO影响 | 降权 | 加权(Google优先收录HTTPS) |
| 需要证书 | 不需要 | 需要SSL证书 |
- 浏览器标记HTTP为"不安全",影响用户信任
- Google和百度优先收录HTTPS网站,SEO更好
- 防止数据被运营商或中间人篡改(如插入广告)
- 很多新功能(Service Worker、HTTP/2、地理位置等)要求HTTPS
- 广告联盟(AdSense等)要求网站必须支持HTTPS
二、免费SSL证书方案
| 证书类型 | 颁发机构 | 有效期 | 申请难度 | 推荐指数 |
|---|---|---|---|---|
| Let's Encrypt | ISRG | 90天(自动续期) | 简单(宝塔一键) | ⭐⭐⭐⭐⭐ 最推荐 |
| 阿里云免费DV | 阿里云 | 1年 | 中等(需审核) | ⭐⭐⭐⭐ 推荐 |
| 腾讯云免费DV | 腾讯云 | 1年 | 中等(需审核) | ⭐⭐⭐⭐ 推荐 |
| Cloudflare | Cloudflare | 自动(托管) | 简单(接入即用) | ⭐⭐⭐⭐⭐ 用CF推荐 |
| ZeroSSL | ZeroSSL | 90天 | 简单 | ⭐⭐⭐ 备选 |
用宝塔面板:直接在宝塔中申请Let's Encrypt,一键完成,自动续期,最方便
用Cloudflare:域名接入Cloudflare后自动提供免费SSL,不需要在服务器上装证书
需要1年有效期:申请阿里云/腾讯云的免费DV证书,有效期1年
三、宝塔面板一键申请
如果你用宝塔面板,申请SSL证书最简单,一键完成。
- 登录宝塔面板
- 左侧菜单 → "网站"
- 点击要配置SSL的网站名称
- 切换到"SSL"选项卡
- 选择"Let's Encrypt"(推荐)
- 勾选要申请证书的域名(包括@和www)
- 填写邮箱(用于接收证书到期提醒)
- 勾选"自动续期"(强烈建议勾选)
- 点击"申请"
- 等待申请完成(通常1-2分钟)
- 申请成功后,证书状态显示为"已部署"
- 开启右上角的"强制HTTPS"开关(将HTTP跳转到HTTPS)
申请Let's Encrypt证书前,确保:①域名已经解析到当前服务器IP;②安全组放行80端口(验证需要);③网站已经在宝塔中创建并绑定了域名;④没有其他证书冲突。否则申请会失败。
3.1 部署其他证书
如果申请了阿里云/腾讯云的证书,可以在宝塔中手动部署:
- 在SSL选项卡中选择"其他证书"
- 将证书文件(.pem或.crt)的内容粘贴到"证书(PEM格式)"框
- 将私钥文件(.key)的内容粘贴到"私钥(KEY)"框
- 点击"保存"
- 开启"强制HTTPS"
四、手动申请Let's Encrypt
如果不用宝塔,可以用certbot工具手动申请Let's Encrypt证书。
- 安装certbot:
yum install certbot python3-certbot-nginx -y - 申请证书(Nginx插件自动配置):
certbot --nginx -d example.com -d www.example.com - 按提示输入邮箱、同意协议
- 选择是否强制HTTPS(选2:Redirect)
- 证书自动安装到Nginx配置中
- 测试自动续期:
certbot renew --dry-run
- 安装certbot:
apt install certbot python3-certbot-nginx -y - 申请证书:
certbot --nginx -d example.com -d www.example.com - 后续步骤同上
五、HTTP强制跳转HTTPS
安装SSL证书后,需要将HTTP请求自动跳转到HTTPS,确保用户访问的是加密版本。
5.1 宝塔面板中设置
最简单的方式:在网站SSL设置页面,开启右上角的"强制HTTPS"开关即可。
5.2 Nginx配置中设置
手动在Nginx配置中添加跳转规则:
在Nginx配置文件中,将80端口的server块改为:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
然后443端口的server块正常配置SSL:
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
# 其他配置...
}5.3 WordPress中设置
如果是WordPress网站,还需要在后台设置中修改地址:
- WordPress后台 → 设置 → 常规
- WordPress地址(URL)改为 https://example.com
- 站点地址(URL)改为 https://example.com
- 点击"保存更改"
- 可以安装Really Simple SSL插件,自动处理HTTPS混合内容问题
六、证书续期与FAQ
6.1 证书续期
- Let's Encrypt:有效期90天,宝塔中勾选"自动续期"会自动续期;手动安装的certbot也会自动续期(系统定时器)
- 阿里云/腾讯云免费DV:有效期1年,到期前需要重新申请并部署
- Cloudflare:自动管理,不需要手动续期
在浏览器中点击地址栏的小锁图标 → "证书",可以查看证书的颁发者和有效期。也可以用在线工具(如sslshopper.com)检查证书状态。
6.2 常见问题
Q:申请Let's Encrypt失败怎么办?
A:常见原因:①域名没有解析到服务器;②80端口被防火墙拦截;③网站根目录权限问题;④申请次数超限(每周每个域名50次)。解决方法:检查解析和端口,用宝塔的"DNS验证"方式申请(不需要80端口)。
Q:HTTPS网站显示"混合内容"警告怎么办?
A:这是因为页面中引用了HTTP的资源(图片、CSS、JS等)。解决方法:将所有资源链接改为HTTPS,或使用协议相对路径(//example.com/...)。WordPress可以安装Really Simple SSL插件自动修复。
Q:一个证书可以保护多个域名吗?
A:Let's Encrypt支持多域名证书(SAN证书),申请时添加多个域名即可。也可以申请通配符证书(*.example.com),保护所有子域名,但通配符证书需要DNS验证。
Q:免费证书和付费证书有什么区别?
A:加密强度相同,区别在于:①验证级别(免费是DV域名验证,付费有OV企业验证、EV增强验证显示公司名);②保险金额;③技术支持;④有效期。个人网站和中小企业用免费DV证书完全足够。
Q:证书过期了网站会怎样?
A:证书过期后,浏览器会显示"您的连接不是私密连接"警告,用户需要点击高级才能继续访问,严重影响用户体验和SEO。一定要在到期前续期。