Let’s Encrypt

本文记录如何在 CentOS + AMH 环境下配置 Let’s Encrypt 证书。

环境

CentOS, AMH 下的 Nginx。

准备

以请求 SSL 证书 的根域名为后缀的 Email,推荐使用腾讯的免费企业邮箱;

确保域名的DNS没有加速,如果使用了百度云加速之类,应关闭加速;

确保各个请求 SSL 证书的域名都能通过网络访问到;

在 AMH 后台安装 amhssl 插件;

服务器需安装 git 和 Python 2.7 。

请求SSL证书

在一个方便访问的地方,比如 home 或者 wwwroot 下,建立目录,并 clone 脚本:

mkdir forssl

git clone https://github.com/letsencrypt/letsencrypt

cd letsencrypt

然后执行命令:

./letsencrypt-auto certonly --standalone --email hi@coolwp.org

-d app1.coolwp.org -d coolwp.org

正常情况下,会看到:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/app1.coolwp.org/fullchain.pem. Your cert will
   expire on 2017-05-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: 私钥。

还有个 README 文件,大意是说,该目录中的文件:

fullchain.pem 是公钥,privkey.pem 是私钥。

配置 AMH SSL 证书

在 amhssl 证书管理页面( 从菜单 应用软件 中的菜单项 amhssl-x.x 进入),创建一个 AMH 证书:

创建后,点击证书列表中刚创建的那个 AMH 证书后面的配置:

将上一步得到的私钥(也就是那个 privkey.pem )填写在 “创建 Key 私钥” 输入栏,然后点击“创建私钥”按钮;

点击第二个输入栏下的“自建生成CSR签名方式”,任意输入,然后点击“创建签名按钮”;

在“创建 CRT 证书” 输入栏,输入上一步得到的公钥(也就是那个 fullchain.pem )的内容,然后点击“完成创建证书”按钮;

使用 SSL 证书

在 amhssl 证书管理页面,点击刚才创建并已配置的证书后面的“应用”,即可将该证书应用于指定的虚拟机;

还没完,由于 Let’s Encrypt 的证书只有90天的时效,到期前应续签,否则,额,就很麻烦,可是 AMH 官方的 SSL 证书配置方式结合 Let’s Encrypt SSL 证书使用的话,如果不做这一步的配置,即使续签证书,也是无效的。

在应用了证书的某个虚拟机的 Nginx 配置文件中,更改私钥和公钥的位置为 Let’s Encrypt 脚本生成证书的位置(其实也是快捷方式),而不使用 amhssl 自动写到这个配置文件中的位置,示例:

将 app1.conf 中的证书位置由:

ssl_certificate_key  /home/wwwroot/lnmp04/etc/app1-ssl/app1.key;
ssl_certificate  /home/wwwroot/lnmp04/etc/app1-ssl/app1.crt;

更改为:

#ssl_certificate_key  /home/wwwroot/lnmp04/etc/app1-ssl/app1.key;
#ssl_certificate  /home/wwwroot/lnmp04/etc/app1-ssl/app1.crt;
ssl_certificate_key  /etc/letsencrypt/live/app1.coolwp.org/privkey.pem;
ssl_certificate  /etc/letsencrypt/live/app1.coolwp.org/fullchain.pem;

这么做了之后,在续签了 Let’s Encrypt SSL 证书之后,就不需要再次配置 amhssl了。

续签 Let’s Encrypt 的证书

在证书即将到期时,在上次运行letsencrypt 的地方,运行命令:

./letsencrypt-auto renew

即可完成续签。

如果证书远未到期,尝试运行续签命令时,会提示:

The following certs are not due for renewal yet:
/etc/letsencrypt/live/app1.coolwp.org/fullchain.pem (skipped)
No renewals were attempted.

0 renew failure(s)

参考链接

https://letsencrypt.org/docs/rate-limits/

https://github.com/certbot/certbot

 

发表评论