let’s Encrypt提供的免费的ssl证书申请流程已经非常简便,使用度也非常高。证书的申请方法有很多中,这里记录最简单的一种。let’s Encrypt免费证书有效期90天,续用更新会相应减少期限,各种续期提醒会准时发送邮件到域名配置的邮箱
流程及注意:
有些let’s Encrypt证书安装方法需要用到python2.7及以上,centos6默认是python2.6版本,需要做相应升级。centos7可以直接跳过。
申请证书之前如果80或443端口被监听,例如nginx已经在使用,就必须把nginx停掉,不然会申请失败。
安装过程超简单
先下载let’s Encrypt指定的安装控件
git clone https://github.com/certbot/certbot
有可能会遇到报错,多是源或者网络的问题,按报错信息基本能自行解决
cd letsencrypt
./letsencrypt-auto certonly --standalone --email [email protected] -d xxx1.org -d xxx2.org
其中email填入邮箱,-d填入有效域名,可单个可多个
./letsencrypt-auto可以有其他指令操作,可以-help查看
申请指令执行后会自动更新环境需要的各种依赖,当然也有跳过的参数,日志中有提示--no-bootstrap
然后简单的手动同意流程
当看到- Congratulations!开头的一段日志就OK了。
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/pushweb.onethird.com.cn/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/pushweb.onethird.com.cn/privkey.pem
Your cert will expire on 2018-07-26. To obtain a new or tweaked
version of this certificate in the future, simply run
letsencrypt-auto again. To non-interactively renew *all* of your
certificates, run "letsencrypt-auto renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
因为是外网服务器,偶尔会有访问不通的情况,多试几次或者换一个时间段试。
证书申请成功之后在/etc/letsencrypt/live/下会生成相应文件
cert.pem - Apache服务器端证书
chain.pem - Apache根证书和中继证书
fullchain.pem - Nginx所需要ssl_certificate文件
privkey.pem - 安全证书KEY文件
主要用到fullchain.pem,privkey.pem两个文件
nginx主要配置
server {
listen 443;
server_name xxx.cn;
location /{
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 3;
proxy_send_timeout 30;
proxy_read_timeout 30;
proxy_pass http://xxx;
}
ssl on;
ssl_certificate /etc/letsencrypt/live/xxx.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/xxx.cn/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
ssl_prefer_server_ciphers on;
}
再刷新nginx配置
证书更新
在let’s Encrypt安装目录下
./certbot-auto renew --force-renew
有可能会提示python版本问题,如果是python2.7以下的就需要升级,注意重新配置2.6的引用,不然命令行会失效