前提条件

  • 已有SSL数字证书,参考申请SSL证书
  • SSL证书绑定的域名已完成DNS解析,即您的域名与主机IP地址相互映射。参考DevOps-域名解析
  • Web服务器开放了443端口(HTTPS通信的标准端口)。
    • 如果是阿里云ECS服务器,需在安全组规则入方向添加TCP 443端口。

步骤一:下载SSL证书

  1. 登录数字证书管理服务控制台
  2. 选择证书管理 > SSL证书管理。
  3. 在SSL 证书页面,定位到目标证书,在操作列,单击下载。
  4. 在服务器类型为Nginx的操作列,单击下载。
  5. 解压缩已下载的SSL证书压缩包。

步骤二:在Nginx服务器安装证书

  1. 执行以下命令,在Nginx的conf目录下创建一个用于存放证书的目录。

    #进入Nginx默认配置文件目录。
    cd /usr/local/nginx/conf
    #创建证书目录,命名为cert。
    mkdir cert
  2. 将证书文件和私钥文件上传到Nginx服务器的证书目录(/usr/local/nginx/cert)。

  3. 编辑Nginx配置文件nginx.conf,修改与证书相关的配置。

    1. 执行以下命令,打开配置文件。

      vim /usr/local/nginx/conf/nginx.conf
    2. 参考示例如下,自行进行修改。

      server {
       #HTTPS的默认访问端口443。
       #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
       listen 443 ssl;
       
       #填写证书绑定的域名
       server_name <yourdomain>;
       
       #填写证书文件绝对路径
       ssl_certificate cert/<cert-file-name>.pem;
       #填写证书私钥文件绝对路径
       ssl_certificate_key cert/<cert-file-name>.key;
       
       ssl_session_cache shared:SSL:1m;
       ssl_session_timeout 5m;
       
       #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
       #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
       ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
       ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
       
       #表示优先使用服务端加密套件。默认开启
       ssl_prefer_server_ciphers on;
       
      location / {
             root html;
             index index.html index.htm;
      }

    }
    ```

    1. 设置HTTP请求自动跳转HTTPS。 示例如下,可参考Nginx-重定向

      server {
          listen 80;
          #填写证书绑定的域名
          server_name <yourdomain>;
          #将所有HTTP请求通过rewrite指令重定向到HTTPS。示例
          #rewrite ^(.*)$ https://$host$1;
       
      	#目前在用的写法
          return 301 https://$http_host$request_uri;
          location / {
              index index.html index.htm;
          }
      }
  4. 执行以下命令,重启Nginx服务。

    #进入Nginx服务的可执行目录。
    cd /usr/local/nginx/sbin  
    #重新载入配置文件。
    ./nginx -s reload  

重启时遇到缺少http_ssl_module,可见Nginx缺少http_ssl_module

参考

Nginx配置SSL证书-阿里云帮助中心 (aliyun.com)