Let's Encrypt 配置过程记录

2016-10-18 Meng Lei 更多博文 » 博客 » GitHub »

HTTPS Nginx

原文链接 http://menglei.tk/2016/10/18/certbot/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


Let's Encrypt 是一个免费的SSL证书机构,可以通过Certbot工具进行申请。

Let's Encrypt 网站: https://letsencrypt.org/

Certbot 网站: https://certbot.eff.org/

Certbot Github: https://github.com/certbot/certbot

测试环境: Ubuntu 14.04, python 2.7, nginx 1.4.6

申请过程

1.安装

首先要保证电脑中已经安装了git和nginx,并且能够正确运行。

安装certbot可以从github上面clone,或者直接从官方提供的下载地址进行下载。

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

2.配置

上面下载到的是一个自动安装脚本,运行这个脚本,会自动下载并安装所需要的各种依赖,下载完成之后,我们可以再次运行这个脚本进行证书的申请。但是,此时可以先创建一个配置文件,省去每次都要输入一长串命令的麻烦。Certbot的配置文件默认存放位置是/etc/letsencrypt/,默认的文件名是cli.ini,所以我们创建一个文件/etc/letencrypt/cli.ini,内容如下:

rsa-key-size = 2048  //密钥长度,2048足够

email = foo@example.com  //您的邮箱地址

domains = example.com, www.example.com  //要申请证书的域名,多个域名用逗号分隔

text = True  //是否使用文字交互,如果选false,将使用ncurses交互

authenticator = webroot  //域名的验证方式
webroot-path = /usr/share/nginx/html   //指定http服务器的root文件夹

3.申请

只要执行 certbot --config /etc/letsencrypt/cli.ini 即可按照cli.ini中的配置内容进行申请证书的操作,申请成功之后,证书文件会存放在 /etc/letsencrypt/archive/example.com 文件夹中,同时,在 /etc/letencrypt/live/example.com/ 中,会有相应的软连接,我们在使用的时候,可以直接利用软连接即可,避免续期之后的证书文件名变更导致nginx配置出错。

4.使用

在nginx的ssl配置时,按照如下配置即可。

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

5.续期

由于Let's Encrypt 证书的有效期只有三个月,我们必须在到期之前对其进行续期。续期的操作是执行命令行 certbot-auto renew。我们可以创建定时任务,保证服务可以一直有效。

运行 crontab -e ,同时在下面加入一行:

00 3 * * 0 certbot-auto renew
01 3 * * 0 service nginx reload 

每周日凌晨三点钟运行续期服务,如果证书即将到期,即可自动对证书进行续期三个月,同时三点零一分会自动重新加载nginx,使得新申请的证书生效。

这样,HTTPS部分就已经配置完成并且不需要任何操作了,只要服务器一直在运行并且Let's Encrypt 服务没有出意外,我们的HTTPS就会一直有效下去。