手把手教你如何给网站添加免费的HTTPS证书

写在前面

最近刚刚提交了离职申请,即将告别这家陪伴我九年多的公司,心中充满感恩。接下来在入职下一份工作前,会有一段相对空闲的时间,预计会以较高的频率更新博客内容。

如今,HTTPS 已成为现代网站的标配。不支持 HTTPS 的站点不仅会被主流浏览器标记为“不安全”,还可能被直接阻止访问。因此,为网站启用 HTTPS 不仅是提升安全性的必要措施,也是增强用户信任的关键一步。

本文将手把手带你完成免费 HTTPS 证书的申请与部署全过程。一些基础概念我们放在文末的【附录】中,感兴趣的同学可以进一步了解。


环境说明

  • 云服务器提供商:火山引擎
  • 域名托管平台:阿里云
  • 操作系统:CentOS Stream 8
  • Web 服务器:nginx/1.14.1

步骤一:申请免费 SSL 证书

国内主流云服务商(如阿里云、腾讯云、火山引擎等)均提供免费的 SSL 证书服务。通常每人每年可申请 20 张证书,每张有效期为 3 个月,到期后可重新申请,完全满足个人或测试站点的需求。

本文以 火山引擎 为例,演示证书申请流程。

1. 进入证书申请页面

访问 火山引擎证书中心,点击“免费证书”进行申请。

申请入口

2. 填写申请信息

根据提示填写域名、联系人等信息。建议参考下图填写:

填写申请信息

3. CA 机构自动验证

提交后,系统会自动触发 CA(证书颁发机构)的初步验证,通常只需 2–3 分钟。

CA 验证中

4. 域名所有权验证

验证通过后,页面会显示用于域名验证的 DNS 记录信息(通常为 TXT 类型),你需要将该记录添加到域名解析中。

域名验证信息

5. 添加 DNS 解析记录

登录你的域名管理后台(如阿里云控制台),添加对应的 TXT 记录。

添加解析记录

6. 检查配置并等待签发

返回证书管理页面,点击“检查配置”。系统通常会在 10 分钟内完成验证。验证成功后,证书状态将变为“已签发”。


步骤二:下载并部署证书到 Nginx

1. 下载证书

在证书管理界面,选择 Nginx 类型下载证书包(例如:zengmx.com_nginx.tar)。

下载证书

2. 上传证书文件

将解压后的两个文件(.key.pem)上传至服务器,建议存放路径为 /etc/nginx/cert/

1
2
3
4
5
6
[root@iv-ydtka cert]# pwd
/etc/nginx/cert
[root@iv-ydtka cert]# ll
总用量 12
-rw-r--r-- 1 root root 1675 10月 8 10:45 zengmx.com.key
-rw-r--r-- 1 root root 5095 10月 8 10:45 zengmx.com.pem

3. 修改 Nginx 配置

编辑 Nginx 主配置文件(如 /etc/nginx/nginx.conf 或站点专属配置),添加 HTTPS 监听块:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
server {
listen 443 ssl;
server_name zengmx.com;

ssl_certificate /etc/nginx/cert/zengmx.com.pem;
ssl_certificate_key /etc/nginx/cert/zengmx.com.key;

ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
root /data/hexo;
index index.html index.htm;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

⚠️ 注意:确保已开放服务器防火墙的 443 端口,并保留原有的 80 端口重定向(可选)以实现 HTTP 自动跳转 HTTPS。

4. 重启 Nginx

执行以下命令使配置生效:

1
nginx -t && systemctl reload nginx

现在,你就可以通过 https://zengmx.com 安全访问你的网站了!

🔗 访问我的个人空间


附录:核心概念

什么是 SSL 证书?

SSL 证书是由 WebTrust 认证的权威 CA(Certificate Authority,证书颁发机构)签发的数字凭证,具备 身份验证数据加密 双重功能。它基于 SSL/TLS 协议,在应用层(如 HTTP)与传输层(TCP/IP)之间建立安全通道,保障通信的机密性、完整性和真实性。

SSL/TLS 加密原理简述

SSL/TLS 采用 混合加密机制

  1. 非对称加密 用于身份认证和密钥交换;
  2. 对称加密 用于后续高效的数据传输。

证书生成与验证流程:

  • 服务器生成密钥对(如 RSA 2048 或 ECC 256),并向 CA 提交 CSR(证书签名请求)。
  • CA 通过 DNS 或文件方式验证域名所有权后,使用其私钥对服务器公钥进行数字签名,生成标准 X.509 证书。
  • 浏览器通过信任链(根证书 → 中间证书 → 服务器证书)逐级验证,防止伪造。

TLS 握手过程(简化):

  1. 客户端发送 ClientHello,包含支持的加密套件和随机数;
  2. 服务器回应 ServerHello,选定加密算法并发送证书链;
  3. 客户端验证证书有效性(域名匹配、未过期、未吊销);
  4. 客户端生成“预主密钥”,用服务器公钥加密后发送;
  5. 双方基于预主密钥和随机数,推导出相同的会话密钥;
  6. 后续通信使用该会话密钥进行对称加密(如 AES),兼顾安全与性能。

为什么必须使用 HTTPS?

未启用 HTTPS 的网站如同在互联网上“裸奔”:

  • 所有数据(包括密码、银行卡号等)以明文传输,极易被中间人攻击截获;
  • 浏览器会明确标记为“不安全”,导致用户流失;
  • 可能违反 GDPR、PCI DSS、等保 2.0 等合规要求,面临法律风险。

启用 HTTPS 后:

  • 数据即使被截获也极难破解;
  • 浏览器地址栏显示锁形图标(或企业名称,EV 证书),显著提升用户信任;
  • 满足多项国际安全标准,为业务合规打下基础。

总结:借助云厂商提供的免费证书,配合 Nginx 简单配置,即可快速为网站启用 HTTPS。这不仅是技术最佳实践,更是对用户负责的表现。


如有任何疑问,欢迎留言交流!