1. 下载SSL证书
在SSL服务提供商处,下载Nginx(适用大部分场景)(pem文件、crt文件、key文件)格式的SSL证书
2. 安装SSL证书到Nginx服务器
前置:为Nginx安装好SSL模块
nginx -V 2>&1 | grep -o -- '--with-http_ssl_module'
执行以下命令,若输出--with-http_ssl_module则说明已安装 SSL 模块,否则需进行安装。
a. 将domain.key和domain_bundle.crt文件放在服务器/etc/nginx/cert中
b. 添加监听443端口的server块
server {
listen 443 ssl default_server;
server_name yourdomain.com www.yourdomain.com;
# ======================= 证书配置开始 =======================
# 指定证书文件(中间证书可以拼接至该pem文件中),请将 /etc/nginx/cert/ssl.crt 替换为您实际使用的证书文件的绝对路径
ssl_certificate /etc/nginx/cert/ssl.crt;
# 指定私钥文档,请将 /etc/nginx/cert/ssl.key 替换为您实际使用的私钥文件的绝对路径
ssl_certificate_key /etc/nginx/cert/ssl.key;
# 指定允许的 TLS 协议版本,TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差
ssl_protocols TLSv1.2 TLSv1.3;
# 自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
# 优先使用服务端指定的加密套件
ssl_prefer_server_ciphers on;
# 配置 SSL 会话缓存,提高性能
ssl_session_cache shared:SSL:1m;
# 设置 SSL 会话超时时间
ssl_session_timeout 5m;
# ======================= 证书配置结束 =======================
# 其它配置
...
}
c. 可选:设置 http 请求自动跳转到 https。在原有监听 80 端口的 server 块中添加 return 指令即可。
# 原有监听 80 端口的 server 块
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
# 设置HTTP请求自动跳转到HTTPS
return 301 https://$host$request_uri;
# 原有其它配置
...
}
3. 验证SSL证书是否安装成功
a. 请通过 HTTPS 访问您已绑定证书的域名(如 https://yourdomain.com,yourdomain.com 需替换为实际域名)。
b. 若浏览器地址栏显示安全锁图标,说明证书已成功部署。如访问异常或未显示安全锁,请先清除浏览器缓存或使用无痕(隐私)模式重试。