【Let's Encrypt】免费SSL证书申请

blog在前一段时间升级了https,证书采用的是Let's Encrypt的免费证书,申请过程比较简单,基本就是工具一路平A,没什么难点。

为了便于以后回忆,特此记录一下。

Let's Encrypt是一个证书发行机构,详细介绍可以点此查看维基百科的解释。它也发行免费的SSL证书,只不过有90天的使用期限,但是可以重复申请,通过脚本我们可以实现无限使用。

一、快速申请证书。

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto certonly --standalone --email admin@example.com -d example.com

执行上面的脚本,我们需要根据自己的实际站点情况将域名更换成自己需要部署的。

直接Agree回车.

如果看到这个界面,说明证书已经申请成功了。

在完成Let's Encrypt证书的生成之后,我们会在"/etc/letsencrypt/live/examp.com/"域名目录下有4个文件就是生成的密钥证书文件。

  • cert.pem  - Apache服务器端证书
  • chain.pem  - Apache根证书和中继证书
  • fullchain.pem  - Nginx所需要ssl_certificate文件
  • privkey.pem - 安全证书KEY文件

如果我们使用的Nginx环境,那就需要用到fullchain.pem和privkey.pem两个证书文件。

  • ssl_certificate /etc/letsencrypt/live/letsencrypt.cc/fullchain.pem
  • ssl_certificate_key /etc/letsencrypt/live/letsencrypt.cc/privkey.pem

 二、自动续期证书

因为证书只有90天有效期,到期后需要自己再次申请。不过我们一般不会记得特意去申请,很多时候自己都会忘了,所以在这里我们做一个定时任务自动完成证书续期。

# /usr/bin

# 先停止nginx服务
/etc/init.d/nginx stop

./letsencrypt/letsencrypt-auto certonly --standalone --renew-by-default --email admin@example.com -d example.com

# 重启nginx服务
/etc/init.d/nginx start

注意,因为 letsencrypt-auto 脚本默认占用80端口,所以执行脚本前需要先停止nginx服务,执行完之后再重新启动 nginx。

将上面内容另存为 letsencryptcover.sh 脚本,保存到 /usr/local/ 目录下,执行 chmod +x 命令,使其变成可执行脚本,然后打开 /etc/crontab 文件,添加下面内容:

# 定时更新letsencrypt证书
0 0 1 0 0 /usr/local/letsencryptcover.sh

将自动续期脚本添加到系统定时任务中。

至此,我们已经拥有了一个无限(理论)期限的免费SSL证书。