使用Let’s Encrypt证书把Nginx网站升级为HTTPS

2017-10-31|Categories: Linux|Tags: |

网站升级为HTTPS是目前的大势所趋,但传统上申请证书很麻烦,价钱也不便宜,这给升级HTTPS带来了很大的障碍,而Let's Encrypt的出现很好的解决了这些问题:它提供免费的证书,以及自动安装证书的工具脚本。

Let's Encrypt已经建立了广泛的影响力:它是Linux Foundation的合作伙伴,同时得到了许多互联网大公司和组织的支持和赞助,包括Mozilla/Akamai/CISCO/EFF/Chrome/Facebook等等。

安装

Let's Encrypt推荐使用Certbot客户端自动颁发证书并安装到系统,不会产生停机。

首先到官网 https://certbot.eff.org/ 选择服务器和操作系统,安装在CentOS 6系统上的Nginx没有打包好的客户端,无法通过yum安装,只能使用脚本:

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto

官方推荐使用sudo ./path/to/certbot-auto --nginx给Nginx自动安装证书,但这个脚本会假设Nginx的配置文件是在/etc/nginx/nginx.conf,而我的Nginx是编译安装,配置文件在其它目录,所以不能使用这条命令,只能先获取证书:

certbot-auto certonly --webroot         \
            -w /var/www/example/        \
            -d www.example.com          \
            -d example.com              \
            --email admin@example.com   \
            --agree-tos

上面的命令使用webroot方式获取证书,这里假设网站根目录是/var/www/example/,证书颁发给www.example.comexample.com两个域名。

第一次运行命令获取证书的时候,需要提供邮箱,还要接受Let's Encrypt的使用协议,添加--email--agree-tos两个选项可以自动完成这两个动作。

配置Nginx

server {
        listen          443 ssl;
        server_name     www.example.com example.com;
        root            html/www;

        ssl_certificate         /etc/letsencrypt/live/www.example.com/fullchain.pem;
        ssl_certificate_key     /etc/letsencrypt/live/www.example.com/privkey.pem;

        ssl_session_cache       shared:SSL:10m;
        ssl_session_timeout     10m;
        keepalive_timeout       70;

        ssl_prefer_server_ciphers       on;
}

Nginx官方文档说:

By default nginx uses “ssl_protocols TLSv1 TLSv1.1 TLSv1.2” and “ssl_ciphers HIGH:!aNULL:!MD5”, so configuring them explicitly is generally not needed. Note that default values of these directives were changed several times.

所以不需要再配置ssl_protocolsssl_ciphers两个选项,除非有特殊需求。

自动更新证书

Let's Encrypt的证书有效期是90天,可以通过Certbot更新证书:

./path/to/certbot-auto renew --dry-run

--dry-run可以检查更新命令是否能正常运行,一切正常的话,就可以配置cronsystemd定期执行更新命令:

./path/to/certbot-auto renew

以上就是在Nginx上安装使用Let's Encrypt证书的完整流程,其它web服务器的安装方法在官网都有详细的说明,此处不再赘述。

Leave A Comment