如何给Nginx配置SSL证书?

2026-06-22T09:24:48

为 Nginx 配置 SSL 证书是实现网站 HTTPS 加密访问的核心步骤。以下是从证书准备、文件配置到安全加固的完整实操指南:

第一步:准备 SSL 证书文件
在配置之前,您需要准备好有效的 SSL 证书文件。您可以选择购买商业证书,或使用 Let's Encrypt 免费获取。通常,您需要准备以下三个文件:
域名证书文件(后缀通常为 .crt、.cer 或 .pem)
私钥文件(后缀为 .key)
中间链证书(后缀通常为 _ca.crt 或 ca-bundle)
注:如果您使用的是 Let's Encrypt 的 Certbot 工具,它会自动生成包含完整证书链的 fullchain.pem 和私钥 privkey.pem。

第二步:上传文件并设置权限
在 Nginx 安装目录下创建一个专用的 cert 或 ssl 目录(例如 /etc/nginx/ssl/),将上述证书文件统一存放至该目录。
安全加固:务必将私钥文件的权限设置为 600,并确保属主为 root,以防止未授权读取导致证书泄露。

第三步:修改 Nginx 配置文件
打开 Nginx 配置文件(通常位于 /etc/nginx/nginx.conf 或 /etc/nginx/sites-available/ 下的站点配置),在对应的 server 块中进行以下配置:

server {

# 1. 监听 443 端口并开启 SSL(推荐同时开启 HTTP/2 提升性能)
listen 443 ssl http2; 
server_name yourdomain.com; # 替换为您的实际域名

# 2. 配置证书与私钥路径(建议使用绝对路径)
ssl_certificate     /etc/nginx/ssl/fullchain.pem; 
ssl_certificate_key /etc/nginx/ssl/privkey.pem; 

# 3. 配置中间证书(如果证书文件中未包含完整证书链,需配置此项)
# ssl_trusted_certificate /etc/nginx/ssl/ca-bundle.crt; 

# 4. 基础安全加固(禁用不安全的旧版协议)
ssl_protocols TLSv1.2 TLSv1.3; 
ssl_ciphers HIGH:!aNULL:!MD5; 
ssl_prefer_server_ciphers on; 

# 5. 启用 HSTS 强制浏览器后续仅通过 HTTPS 访问
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

# 6. 您的网站根目录及路由配置
location / {
    root /var/www/html;
    index index.html;
}

}

第四步:配置 HTTP 自动跳转 HTTPS
为了确保所有流量都通过加密通道传输,需要添加一个监听 80 端口的 server 块,将 HTTP 请求 301 永久重定向到 HTTPS:

server {

listen 80;
server_name yourdomain.com;
return 301 https://hostrequest_uri;

}

第五步:验证配置并重载服务
语法检查:在重载配置前,务必执行 sudo nginx -t 命令,检查配置文件是否存在语法错误或路径权限问题。
重载服务:如果测试通过,执行 sudo systemctl reload nginx 使配置生效(无需完全重启服务)。

第六步:验证与排错
浏览器验证:在浏览器中访问 https://yourdomain.com,检查地址栏是否显示安全锁图标。
在线检测:推荐使用 SSL Labs 等在线工具对您的域名进行扫描,评估证书链是否完整及整体安全评分。
常见报错排查:若浏览器提示“不安全”,请检查证书是否过期、绑定的域名是否匹配,或者页面中是否加载了 HTTP 协议的图片/脚本资源(即混合内容问题)。

当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »