1 前言
Caibaoz.com用Let's Encrypt的证书实现SSL加密(也就是HTTPS),但如果遇到网站迁移、或者子域名也需要HTTPS的时候,应该如何操作?本文简要回答这2个问题。
需要说明一点,Let's Encrypt本身只是一个CA机构,只负责证书的发行,证书的申请和自动续订是使用工具实现的。我使用Certbot这个工具,因此本文的内容也主要是Certbot的一些命令。
最后,本文只适用于具有shell访问权限的情况(自己搭web服务器)。
1.1 软件版本
操作系统:Debian 9
Web服务器:Apache 2.4
Certbot:根据Certbot安装文档从Debian backports安装的版本
2 操作
2.1 网站迁移
就当旧服务器的证书不存在,在新服务器上申请新的证书即可。但需要注意不要超过Let's Encrypt的重复证书申请限制:如果新证书所包含的域名和已申请过的证书完全相同,这样的证书申请每周只能做5次。比如本周你已经给www.example.com和example.com申请了一个证书,那么本周内你还能给这两个域名申请4次证书。更多限制信息请阅读Let's Encrypt的频率限制。
如果你一定要使用原有的证书,可以参考下面3篇文章。由于使用原有证书的确比申请新证书麻烦,所以我最终没有这么做。
- How to backup and restore Let’s Encrypt Ubuntu server
- How to restore letsencrypt from backup?
- How to install letsencrypt on a new server with existing certificate
2.2 给现有证书添加新域名
- 查看现有证书的名称(显示在Certificate Name那一行),及证书目前所包含的域名:
certbot certificates
- 假设我的证书里原本有www.caibaoz.com和caibaozi.com两个域名,想再添加一个abc.caibaoz.com域名,那么命令可以这样写。“--cert-name”参数后面是证书名称,“-d”参数后面是需要包含在证书里的域名。“certbot certonly”这个命令既可以给证书添加域名,也可以从证书里删除域名,具体是添加还是删除,是用“-d”参数控制的。如果证书原来包含的域名没有用“-d”参数列出来,那么命令执行后会把这些域名从证书中删掉,这一点一定要注意。
certbot certonly --cert-name caibaoz.com -d caibaoz.com -d www.caibaoz.com -d abc.caibaoz.com
- 新域名添加完后,检查一下结果:
certbot certificates
如果只是要给证书里添加子域名,其实这是一个麻烦的办法,更简单的方法是申请一个通配符证书,证书里只需要包含“*.caibaoz.com”这一个域名即可。但Certbot的Debian版本目前还不支持通配符域名,目前只能这样操作。
3 参考文档
一些参考文档已在正文中列出,下面的是没有列出的。
3.1 Changing a Certificate’s Domains
Visits: 2968