Nginx配置HTTPS证书

时间:2024-01-25 21:31:04

1.购买HTTPS证书

我是在美橙互联上购买的Comodo Positive SSL证书,300+RMB一年,购买成功后在管理界面点击获取私钥到邮箱。

2.保存私钥到example_com.key文件

会收到一封包含以下内容的邮件,将包含分割线注释在内的所有文本复制到记事本保存为example_com.key文件。

-----BEGIN RSA PRIVATE KEY-----
xxxx...
-----END RSA PRIVATE KEY-----

3.将ca证书生成ssl-bundle.crt文件

还有一封邮件很重要,内容包含了网址链接和验证码(Validation Code),到该网址所在的网页输入验证码,稍后会收到一封包含证书附件的邮件,附件名是域名.zip。该zip文件主要包含以下内容:
Root CA Certificate – AddTrustExternalCARoot.crt
Intermediate CA Certificate – USERTrustRSAAddTrustCA.crt
Intermediate CA Certificate – SectigoRSADomainValidationSecureServerCA.crt
Your PositiveSSL Certificate – www_example_com.crt (or the subdomain you gave them)
这些证书不能直接配置到nginx中,需要先使用cat命令按照顺序组成ssl-bundle.crt文件,命令如下:

cat www_example_com.crt SectigoRSADomainValidationSecureServerCA.crt  USERTrustRSAAddTrustCA.crt AddTrustExternalCARoot.crt > ssl-bundle.crt

4.上传ssl-bundle.crt和example_com.key文件

将ssl-bundle.crt和example_com.key文件上传到服务器,保存到如下位置(注意将example_com替换为你自己的域名)

mkdir -p /etc/nginx/ssl/example_com/
mv ssl-bundle.crt /etc/nginx/ssl/example_com/
mv example_com.key /etc/nginx/ssl/example_com/

5.配置Nginx

server {
    #ssl参数
    listen              443 ssl;
    server_name         example.com;
    #证书文件
    ssl_certificate     /etc/nginx/ssl/example_com/ssl-bundle.crt;
    #私钥文件
    ssl_certificate_key /etc/nginx/ssl/example_com/example_com.key;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;
    #...
}

6.强制HTTP跳转到HTTPS

如果需要强制非https访问也跳转至https访问,那么需要在原来的server节点当中增加如下内容:
rewrite ^(.*)$ https://$host$1 permanent;

7.重启nginx令配置文件生效

按照上述配置信息修改nginx配置文件后,需要重启nginx令配置文件生效
nginx -s reload