Nginx使用Let's Encrypt无限期多域名证书配置

之前在阿里云申请的Symantec免费版 SSL到期了,后来又看到google在2018年4月份之后对Symantec不再信任的原因,觉得小站还是用用Let's Encrypt 的免费证书靠谱些

机器是阿里云的一台最低配置的ECS,安装有ubuntu 16.04系统 好了,废话少说了,开始进入正题 1、先下载certbot包,这个是python写的一个自动生成Let's Encrypt的程序

>> wget https://github.com/certbot/certbot/archive/master.zip
>> unzip master.zip

2、进入到文件夹,然后运行letsencrypt-auto 程序,具体参数如下

>> service nginx stop
>> ./letsencrypt-auto certonly --standalone --email 你的邮箱 -d 需要配置的域名
这里可以加入多个域名比如 -d 需要的第二个域名,前提是这些域名都正确的解析到当前服务器IP了
>> ./letsencrypt-auto certonly --standalone --email 你的邮箱 -d 域名1 -d 域名2 -d 域名3

首次运行的时候会提示你同意条款之类的,选在Agree就行了 然后程序会自动安装所依赖的包,检验域名合法性,这里需要指出的是:standalone模式会启用443端口,这跟nginx有冲突,所以需要事先将nginx停掉,待证书配置完毕后再启用起来

一会儿证书就会生成到 /etc/letsencrypt/live/你的域名 下了,如果是多个域名的话,会生成你的域名-0001目录,需要的证书就在这个目录下

nginx里我们需要sslcertificate以及sslcertificate_key

具体nginx配置如下

server {  
        ......
        ssl on;
        ssl_certificate      /etc/letsencrypt/live/你的域名/fullchain.pem;
        ssl_certificate_key  /etc/letsencrypt/live/你的域名/privkey.pem;
        ssl_session_cache    shared:SSL:10m;
        ssl_session_timeout  10m;
        ......
}

然后重启nginx就行了


由于letsencrypt有三个月的有效期,过期后需要重新续签,所以做了一个叫脚本,来自动续签

#! /bin/bash
service nginx stop  
/data/letsencrypt/letsencrypt-auto renew
service nginx start  

由于是续签,所以直接renew就可以了 然后做个定时任务,每三个月运行这个脚本就ok了

浙ICP备16045237号-1