HTTPS 配置

更新于 2026年7月23日

适用人群:网站已能通过HTTP访问、需要升级为HTTPS的站长/开发者

核心概念

证书类型简单对照

类型 验证方式 特点
DV(域名验证) 只验证域名所有权 签发快,免费证书(如Let's Encrypt)多为此类
OV(组织验证) 验证企业/组织信息 证书里含组织名称,需人工审核
EV(扩展验证) 严格验证企业资质 审核最严格,多用于金融等高信任场景

证书还分"单域名""多域名(SAN)""通配符(*.example.com)",选型时要覆盖到根域名、www以及实际会用到的子域名。HTTPS本质是在HTTP外面套一层TLS加密+身份认证,浏览器通过证书链一路验证到受信任的根证书才会显示为"安全"。

操作步骤

  1. 步骤 1获取证书

    通过Let's Encrypt(免费)、云厂商或商业CA申请证书,个人站点最常用certbot自动申请,参考 /tutorial/site-launch/ssl-install。

  2. 步骤 2上传证书文件到服务器

    把完整证书链(fullchain)和私钥文件放到服务器指定目录,注意私钥文件权限要收紧(如600)。

  3. 步骤 3配置443监听与证书路径

    在Nginx server块中listen 443 ssl,用ssl_certificate/ssl_certificate_key指定文件路径。

  4. 步骤 4配置HTTP到HTTPS跳转

    让80端口的server块对所有请求做301重定向到https://同域名同路径,避免用户还停留在明文HTTP。

  5. 步骤 5开放防火墙/安全组443端口

    确认云服务器安全组规则和系统防火墙(如ufw/firewalld)都放行了443端口。

  6. 步骤 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或协议相对路径。

相关教程

官方资料来源