前置条件

配置 HTTPS 服务时,您需要预先在 ECS 实例所在的安全组开启 TCP 443 通信端口。

若您需要同时测试 HTTP 访问模式,您需要预先在 ECS 实例所在的安全组开启 TCP 80 通信端口。

获取SSL证书

  1. 申请免费SSL证书
    具体操作参见 申请免费SSL证书
  1. 下载证书到本地
    申请成功后,跳转到云盾证书服务管理控制台,依照控制台的操作步骤 补全信息 > 提交审核 > 查看进度 > 颁发证书 > 下载证书
    下载后,解压压缩包。
  2. 创建放置SSL证书的文件夹
    登录到远程服务器,使用以下命令创建文件夹

    $ mkdir /etc/nginx/ssl
  3. 上传证书到服务器指定目录

    $ scp [-i identity_file] -r /path/{ssl证书文件夹}/* [[user@]host:]/etc/nginx/ssl/

配置 Nginx + HTTPS

  1. 登录到远程服务器
  2. 进入 cd /usr/local 目录
  3. 安装 PCRE 和 zlib 库

    $ yum -y install pcre pcre-devel zlib-devel
  4. 前往 https://nginx.org/download/ 下载 Nginx。本例中下载地址为 http://nginx.org/download/nginx-1.13.12.tar.gz

    $ wget http://nginx.org/download/nginx-1.13.12.tar.gz
  5. 解压下载的压缩包到 /usr/local/src

    $ tar -xzvf nginx-1.13.12.tar.gz -C /usr/local/src
  6. 前往 https://www.openssl.org/source 下载 OpenSSL。本示例中下载地址为 https://www.openssl.org/source/openssl-1.1.1-pre5.tar.gz

    $ wget https://www.openssl.org/source/openssl-1.1.1-pre5.tar.gz
  7. 解压压缩包

    $ tar -xvzf openssl-1.1.0g.tar.gz
  8. 进入cd nginx-1.13.12,编译 Nginx

    1. ./configure \
     --prefix=/usr/local/nginx \
     --sbin-path=/usr/sbin/nginx \
     --conf-path=/etc/nginx/nginx.conf \
     --error-log-path=/var/log/nginx/error.log \
     --http-log-path=/var/log/nginx/access.log \
     --pid-path=/var/run/nginx.pid \
     --lock-path=/var/run/nginx.lock \
     --http-client-body-temp-path=/var/tmp/nginx/client \
     --http-proxy-temp-path=/var/tmp/nginx/proxy \
     --http-fastcgi-temp-path=/var/tmp/nginx/fcgi \
     --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \
     --http-scgi-temp-path=/var/tmp/nginx/scgi \
     --with-pcre \
     --with-http_v2_module \
     --with-http_ssl_module \
     --with-http_realip_module \
     --with-http_addition_module \
     --with-http_sub_module \
     --with-http_dav_module \
     --with-http_flv_module \
     --with-http_mp4_module \
     --with-http_gunzip_module \
     --with-http_gzip_static_module \
     --with-http_random_index_module \
     --with-http_secure_link_module \
     --with-http_stub_status_module \
     --with-http_auth_request_module \
     --with-mail \
     --with-mail_ssl_module \
     --with-file-aio \
     --with-http_v2_module \
     --with-threads \
     --with-stream \
     --with-stream_ssl_module \
     --with-openssl=/usr/local/openssl-1.1.1-pre5
    
    2. make && make install
    Notice:根据实际情况修改 OpenSSL 路径
  9. 编辑 Nginx 配置文件 vim /etc/nginx/nginx.conf
    复制以下内容并保存;

    server {
       listen       443;
       ssl          on;
       server_name  localhost;
    
       ssl_certificate      /etc/nginx/ssl/cert.pem;
       ssl_certificate_key  /etc/nginx/ssl/cert.key;
    
       ssl_session_timeout  5m;
    
       ssl_ciphers  ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
       ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
       ssl_prefer_server_ciphers  on;
    
       location / {
           root   html;
           index  index.html index.htm;
       }

    如果要同时支持 HTTP 访问则同时监听 80 端口,添加以下代码

    listen 80;
    listen 443;

    如果强制跳转到HTTPS,添加以下代码

    server {
        listen 80;
        server_name localhost;
        return 301 https://$server_name$request_uri;
    }

参考链接

CentOS 7.4 实例配置 Nginx + HTTPS 服务

暂无评论