1年前 (2016-08-09)  Linux |   抢沙发  1382 
文章评分 1 次,平均分 5.0

Let's Encrypt 是 ISRG (Internet Security Research Group) 提供的一个免费、开放、自动化的证书签发服务。ISRG 是一个美国公益组织,总部在加州。由于得到了 Mozilla、Cisco、Akamai、Electronic Frontier Foundation 和 Chrome 等众多公司和机构的支持,发展十分迅速,甚至连老牌的免费 SSL 服务商 StartSSL 也坐不住,推出了类似 Let's Encrypt 的自动签发和续期工具。

本文介绍了如何使用 Let's Encrypt 签发工具、自动续签以及在 Nginx 上使用签发证书的方法。测试服务器的操作系统是 Ubuntu 14.04 ,使用 Let's Encrypt 官方推荐的 certbot 客户端以及 Webroot 验证方式。

一、下载 certbot

certbot 的下载十分简单,我们使用 wget 命令来进行。在下载后我们还需要对它赋予执行权限,以便于执行。

由于 Let's Encrypt 的有效期是 90 天,到期后我们需要对证书进行续签,因此每隔一段时间就需要使用这个工具,果仁建议将这个工具下载到 /sbin 目录。

二、配置 Nginx 以满足 WebRoot 验证方式的需要

在使用 certbot 之前,我们先要对 Nginx 进行配置,因为使用 webroot 方式,certbot 会在域名对应的根目录创建一个叫做 well-known 的隐藏文件夹,并且创建用于验证域名所有权的文件。而这个文件夹在证书签发的过程中,是需要被访问的。

假设我们我们要签发用于 blog.guorenxi.com 这个域名的 SSL 证书,而这个域名的配置文件在 /usr/local/nginx/conf/blog.conf ,于是我们打开这个文件,并且在 server block 内加入下面的内容:

加入后,这个配置文件的内容应该是这样的:

在保存退出后,我们需要重启 Nginx 。

三、使用 certbot 签发证书

配置完 Nginx 后,我们就可以开始使用 certbot 签发证书了。现在依然假设我们要对 blog.guorenxi.com 签发证书,并且这个域名对应的 webroot 目录是 /var/www/html/blog,那么对应的命令则是:

需要注意,你需要把上面这个命令中的 /var/www/html/blog 替换成你自己的网站目录,并且把 blog.guorenxi.com 替换成你自己的域名。

另外,certbot 是支持多个域名的(官方还没有支持 Wildcard),对应的命令是:

顺利的话,在执行完这个命令之后,我们就获取到了对应的 SSL 证书。这些证书会保存在 /etc/letsencrypt/live/blog.guorenxi.com 。(实际上是个软连接)

注意:如果你使用的是国内的 DNS 服务,是很可能报错的,目前已知的是 DNSPod (包括国际版),唯一的解决办法是使用别的 DNS 服务,这里推荐 NameCheap (免费)。

四、配置 Nginx 以使用签发的证书

在拿到证书后,我们要开始配置 Nginx 来使用这些证书。我们需要再一次打开网站的配置文件,并且让 Nginx 监听 443 端口、配置 SSL 地址以及配置 80 自动跳转。

我们直接修改刚才那个配置文件,把 Listen 80; 改成 Listen 443 ssl; ,修改完之后的配置文件是这样的:

我们还要让访客在访问 80 端口的时候,跳转到 HTTPS ,于是还要在配置文件里面增加一个 Server Block ,修改完之后是这样的:

注意:记得把域名换成你自己的,并且重启 Nginx 。

五、证书的自动续签

正如前文提到的,Let's Encrypt 证书的有效期只有 90 天,因此我们需要定期的对他进行续签,我们使用 cron 来设定计划任务。

注意,如果你是第一次运行 crontab 命令,它会问题使用哪一个编辑器,你可以根据自己的需要进行选择,我选择的是 vim-basic 。

我们可以每周对证书进行一次续签,这对有效的证书是么有任何影响的,同时它会一次性续签所有的证书。我决定在每周一凌晨 3 点 30 分对证书进行续签,并且在 3 点 35 分重启一下 Nginx ,因此要在 crontab 里面加入以下内容:

 

 

除特别注明外,本站所有文章均为果仁博客原创,转载请注明出处来自/43.html

关于

发表评论

表情 格式

暂无评论

登录

忘记密码 ?

切换登录

注册

扫一扫二维码分享