https://wdd.space/

现在非常流行的免费 SSL 证书非 Let’s Encrypt 所有了,经过近几年的发展,Let’s Encrypt 的安装也变得非常简单,这里详细介绍一下 Let’s Encrypt 的安装和配置过程。
环境:CentOS 6 + Apache 2.2
CertBot 是一个很好的工具,我们使用它来安装 Let’s Encrypt。

一、准备

1. 为 CertBot 安装 EPEL 库

1
yum -y install epel-release

2. 安装 CertBot

1
2
wget https://dl.eff.org/certbot-auto
chmod 755 certbot-auto

二、安装 SSL 证书

1. 安装证书

1
./certbot-auto --apache

2. 按照提示操作

(如果 Python 版本低于 2.7 会提示版本过低,可以先忽略)

Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel):输入管理员邮箱

提示输入管理员邮箱,因为 Let’s Encrypt 的免费 SSL 证书有效期是 90 天,这个邮箱的作用就是在证书快到期之前会发邮件提醒续期。

(A)gree/(C)ancel: A

(Y)es/(N)o: Y

Which names would you like to activate HTTPS for?

选择要安装 SSL 证书的域名,多个域名可以中间空格

3. 成功后,会在/etc/letsencrypt/live/域名/下生成 4 个证书文件:

cert.pem ->chain.pem ->fullchain.pem ->privkey.pem ->

三、编辑 ssl.conf

1.打开/etc/httpd/conf.d/ssl.conf,并添加以下语句

1
2
3
4
5
6
7
8
<VirtualHost _default_:443>
SSLEngine on
DocumentRoot "网站目录"
ServerName 域名:443
SSLCertificateFile fullchain.pem的路径位置(如/etc/letsencrypt/live/www.baidu.com/fullchain.pem)
SSLCertificateKeyFile privkey.pem的路径位置(如/etc/letsencrypt/live/www.baidu.com/privkey.pem)
SSLCertificateChainFile chain.pem的路径位置(如/etc/letsencrypt/live/www.baidu.com/chain.pem)
</VirtualHost>

如有多个域名(包括子域名)如要整段继续添加,SSLCertificateFileSSLCertificateKeyFileSSLCertificateChainFile字段不用修改,因为证书唯一。

2.在这个文件中查找Listen 443,并把前面的#去掉。

3.查找SSLCipherSuite 把这个一行修改为

SSLCipherSuite AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;

4.查找SSLProtocol all 把这一行修改为SSLProtocol all -SSLv2 -SSLv3

四、重启 apache 服务:

1
service httpd restart

这个时候访问 https://域名/,应该已经可以了。

五、设置自动续期任务

因为 Let’s Encrypt 的免费 SSL 证书有效期是 90 天,所以我们可以设置自动续期。先手动续期一次试一下:

1
./certbot-auto renew --dry-run

然后进入 cron 定时任务编辑:

1
crontab -e

输入 a 进入编辑状态,然后用方向键选到新的一行,
加上规则:

1
2
0 3 1 * * /root/certbot-auto renew –renew-hook
0 3 1 * * /root/certbot-auto renew --dry-run –renew-hook

按“ESC”退出编辑状态,输入:wq 保存并退出。
查看一下是否存在刚才添加的定时命令:

1
crontab -l