环境与工具准备
配置Nginx SSL证书前,需确保环境符合要求,并准备必要工具。

- 操作系统支持:Nginx SSL配置在主流Linux系统(如Ubuntu、CentOS、Debian)和Windows系统中均支持,但Linux环境更常见且配置灵活。
- Nginx版本要求:需使用Nginx 1.13及以上版本(支持SNI协议),推荐使用最新稳定版(如Nginx 1.21+)。
- 必备工具:
openssl:OpenSSL工具包,用于证书生成、格式转换等;curl/certbot:用于测试证书和自动化申请(如Let’s Encrypt);- 文本编辑器(如Vim、nano):用于编辑配置文件。
获取SSL证书:从免费到付费的选择
SSL证书分为免费和付费两种类型,需根据需求选择:
免费选项:Let’s Encrypt
Let’s Encrypt是全球领先的免费SSL证书颁发机构,提供自动续期和多域名支持,适合中小型网站。- 申请流程:
- 安装Certbot(自动化工具);
- 运行命令申请证书(如:
certbot certonly --webroot -w /var/www/example.com -d example.com -d www.example.com); - 验证域名(通过HTTP-01方式,需配置Web服务器指向验证文件)。
- 优点:免费、自动续期(90天内无需手动更新)、支持多域名(通过SAN扩展)。
- 缺点:需定期验证域名(否则证书失效)、支持域名数有限(100个)。
- 申请流程:
付费选项:企业级证书
若网站需长期稳定、高安全性的证书,可选用Comodo、DigiCert等企业级证书。- 特点:有效期为1-3年、提供根证书更新支持、包含技术支持;
- 适用场景:大型企业、金融、医疗等对安全要求极高的网站。
安装SSL证书:文件格式转换与部署
SSL证书的格式有多种,需根据Nginx配置要求进行转换和部署。

常见文件格式对比(见表1):
| 格式 | 文件内容 | 适用场景 |
|—|—|—|
| PEM | 证书+私钥(文本格式) | 常见,需单独配置 |
| CRT | 仅证书(纯文本) | 仅需证书,无私钥 |
| PFX/P12 | 证书+私钥(二进制,需密码) | 便于打包传输 |
| DER | 二进制格式 | 部分系统兼容 |格式转换示例(PEM→PKCS12):
若证书为PEM格式(含证书和私钥),需转换为PKCS12格式(Nginx常用格式):# 将PEM证书转换为PKCS12(需指定私钥和密码) openssl pkcs12 -export -in cert.pem -inkey key.pem -out cert.p12 -password pass:your_password
- 说明:
cert.pem为证书文件,key.pem为私钥文件,cert.p12为输出文件,your_password为PFX文件的密码。
- 说明:
部署证书:
将转换后的证书文件上传至Nginx配置目录(如/etc/nginx/ssl/),并重命名:- 主证书:
fullchain.pem(包含主证书+中间证书链); - 私钥:
yourdomain.key。
- 主证书:
配置Nginx SSL:核心配置步骤
配置Nginx SSL的核心是修改站点配置文件(如/etc/nginx/sites-available/default),添加SSL相关指令。

1 基本SSL配置示例
以下为完整的Nginx SSL配置片段,包含关键指令说明:
server {
# 监听443端口(HTTPS)
listen 443 ssl http2;
server_name yourdomain.com www.yourdomain.com;
# SSL证书与私钥路径
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/yourdomain.key;
# TLS协议版本(优先TLS 1.3)
ssl_protocols TLSv1.2 TLSv1.3;
# 加密套件(强加密,避免弱加密)
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDH+AESGCM:TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384';
# 禁用服务器端加密套件优先级
ssl_prefer_server_ciphers off;
# 其他配置(如访问控制、日志等)
location / {
# 网站内容配置
}
}2 关键指令说明(见表2)
| 指令 | 作用 |
|---|---|
listen 443 ssl http2; | 监听443端口,启用SSL和HTTP/2协议 |
ssl_certificate ... | 指定证书文件(包含主证书+中间证书链) |
ssl_certificate_key ... | 指定私钥文件 |
ssl_protocols TLSv1.2 TLSv1.3 | 允许的TLS协议版本(TLS 1.3为最新,安全性最高) |
ssl_ciphers | 配置加密套件(强加密,避免使用RC4、DES等弱加密) |
ssl_prefer_server_ciphers off | 禁用服务器端加密套件优先级,避免兼容性问题 |
- 注意:若使用Let’s Encrypt证书,需确保
fullchain.pem包含中间证书链(由Certbot自动生成,通常为fullchain.pem文件)。
测试与验证:确保SSL正常工作
配置完成后,需测试SSL是否生效:
- 浏览器测试:访问
https://yourdomain.com,检查浏览器显示绿色锁标志、证书信息(如颁发机构、有效期)。 - 命令行测试:使用
openssl s_client命令验证证书链:openssl s_client -connect yourdomain.com:443 -servername yourdomain.com
- 正常输出:显示证书链完整、加密套件信息(如
ECDHE-RSA-AES128-GCM-SHA256)。
- 正常输出:显示证书链完整、加密套件信息(如
- 防火墙与端口:确保防火墙允许443端口,Nginx监听该端口(可通过
netstat -tuln | grep 443查看)。
FAQs:常见问题解答
Q1:为什么需要配置中间证书?
- A1:SSL证书通常包含“主证书”(由CA颁发)和“中间证书”(用于链式验证),浏览器需验证证书链的完整性(从主证书到根证书),若未配置中间证书,浏览器会提示“证书无效”或“不安全连接”。
Q2:配置后无法访问HTTPS怎么办?
- A2:检查以下步骤:
- 配置文件语法错误:使用
nginx -t命令检查配置文件语法(如nginx -t输出错误提示); - 证书路径错误:确认
fullchain.pem包含中间证书链,且路径正确(如/etc/nginx/ssl/fullchain.pem); - 防火墙阻止443端口:检查系统防火墙(如
ufw、iptables)是否允许443端口; - 证书已过期:Let’s Encrypt证书有效期为90天,需定期续期(可通过Certbot自动续期)。
- 配置文件语法错误:使用
通过以上步骤,可完成Nginx SSL证书的配置,确保网站安全运行,若遇到复杂问题,可参考Nginx官方文档或联系证书颁发机构获取支持。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/216097.html
