HTTPS 配置
更新于 2026年7月23日
适用人群:网站已能通过HTTP访问、需要升级为HTTPS的站长/开发者
核心概念
证书类型简单对照
| 类型 | 验证方式 | 特点 |
|---|---|---|
| DV(域名验证) | 只验证域名所有权 | 签发快,免费证书(如Let's Encrypt)多为此类 |
| OV(组织验证) | 验证企业/组织信息 | 证书里含组织名称,需人工审核 |
| EV(扩展验证) | 严格验证企业资质 | 审核最严格,多用于金融等高信任场景 |
证书还分"单域名""多域名(SAN)""通配符(*.example.com)",选型时要覆盖到根域名、www以及实际会用到的子域名。HTTPS本质是在HTTP外面套一层TLS加密+身份认证,浏览器通过证书链一路验证到受信任的根证书才会显示为"安全"。
操作步骤
步骤 1获取证书
通过Let's Encrypt(免费)、云厂商或商业CA申请证书,个人站点最常用certbot自动申请,参考 /tutorial/site-launch/ssl-install。
步骤 2上传证书文件到服务器
把完整证书链(fullchain)和私钥文件放到服务器指定目录,注意私钥文件权限要收紧(如600)。
步骤 3配置443监听与证书路径
在Nginx server块中listen 443 ssl,用ssl_certificate/ssl_certificate_key指定文件路径。
步骤 4配置HTTP到HTTPS跳转
让80端口的server块对所有请求做301重定向到https://同域名同路径,避免用户还停留在明文HTTP。
步骤 5开放防火墙/安全组443端口
确认云服务器安全组规则和系统防火墙(如ufw/firewalld)都放行了443端口。
步骤 6验证HTTPS是否正常
用浏览器访问https地址查看锁形图标,或用 /ssl 检测证书链、有效期、域名匹配情况。
实际示例
# 80端口:全部跳转到HTTPS
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
# 443端口:实际站点内容
server {
listen 443 ssl;
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;
root /var/www/example/html;
index index.html;
}
常见错误
- ⚠️只配置了443,没有把80端口的请求跳转过去,用户输入不带https的网址仍走明文
- ⚠️证书文件只上传了单域名证书(cert.pem)而不是包含中间证书的完整链(fullchain.pem),部分浏览器/客户端会报证书不完整
- ⚠️私钥文件权限设置过于宽松,存在被读取的安全风险
- ⚠️配置好Nginx但云服务器安全组没放行443端口,外部仍连接不上
对应工具
常见问题
HTTPS和SSL证书是一回事吗?
不完全是。SSL/TLS证书是HTTPS的基础组件之一,HTTPS是"HTTP + TLS加密"这个整体协议,还包括服务器的正确配置(端口、跳转、加密套件等)。
免费证书和付费证书有什么区别?
免费证书(如Let's Encrypt)多为DV类型,加密强度与付费DV证书没有本质区别,付费证书的差异主要在验证等级(OV/EV)、保险赔付、多域名/通配符支持和厂商服务上。
证书多久后过期,需要续期吗?
Let's Encrypt证书有效期通常为90天,需要定期自动续期;商业证书有效期多为1年,到期前需重新申请或续费。
升级HTTPS后出现混合内容警告怎么办?
说明页面里还有http://开头的图片/脚本/样式等资源,需要把这些资源链接统一改为https或协议相对路径。
相关教程
官方资料来源