NGINX安装SSL证书

本文介绍如何在 NGINX安装SSL证书,包括如何合并证书链,使用高强度的DHE参数 ,配置使用安全的加密套件和安全TLS协议,最后让NGINX 上的网站实现HTTPS访问

1.安装前准备:合并证书

在这里我们把中级证书和域名证书合并成一个证书文件,ca.crt 是中级证书,server.crt 是服务器证书,我们通过下面命令把两个证书合并

cat server.crt ca.crt >> server-bundle.crt

也可以文本编辑器 分别打开 server.crt 和 ca.crt ,
复制这两个文件里面的全部代码到新建的件 server-bundle.crt
注意位置顺序, server.crt的代码放在 ca.crt的代码上面。


2.安装SSL证书

我们把私钥 server.key 和 合并后的证书文件放在目录 /etc/nginx/ssl/ ,或者其他nginx能够读取的目录下,然后编辑 nginx.conf 文件 ,你可以从原来网站的配置代码中复制一份,然后参考下面做相应的修改。

使用更强的DHE参数  ,这里我们可以直接下载 mozilla 的 ssl_dhparam 文件, 下载并保存到指定的目录 ,可以通过下面命令 完成

curl https://ssl-config.mozilla.org/ffdhe2048.txt > /etc/nginx/ssl/dhparam

我们把dhe文件保存在  /etc/nginx/ssl/dhparam

下面我们建立两个nginx 虚拟主机, 第一个用于监听域名的 80端口, 就是 http ,并将所有访问301 重定向到 443端口, 就是 https ,具体代码如下 


# 重定向 http 到  https
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;


    ssl_certificate /etc/nginx/ssl/server-bundle.crt;   #证书文件路径
    ssl_certificate_key /etc/nginx/ssl/server.key;   #私钥文件路径
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
    ssl_session_tickets off;


    ssl_dhparam /etc/nginx/ssl/dhparam;

    # intermediate configuration
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;

    #### 下面这部分不是必须的,可以选择是否使用 #####

    # HSTS:作用是 让浏览器强制跳转到 https , 在指定的时间段内,浏览器在下次访问会直接访问 https (需要用到nginx 模块 :ngx_http_headers_module ) (63072000秒)
    add_header Strict-Transport-Security "max-age=63072000" always;

    # OCSP stapling  ,有些浏览器会访问CA网站验证证书的有效性,使用 OCSP stapling 可以让这个验证在服务器端完成,提高访客端的访问速度
    ssl_stapling on;
    ssl_stapling_verify on;


}

 

然后重启nginx

 

nginx