letsencrypt 可谓是穷人福音啊,一个 https 证书动辄数千,泛域名就更贵了,而前不久 letsencrypt 支持了泛域名,不过不支持三级泛域名,比如 *.kpromise.top 并不能匹配 cdn.blog.kpromise.top ,但是你可以一个证书同时包含多个泛域名,比如同时包含 *.kpromise.top、*.blog.kpromise.top 等等。本文从安装 letsencrypt 开始,记录我某次证书更新。
安装 letsencrypt
这部分可以参考:https://certbot.eff.org/docs/install.html ,具体也可以参考如下:
wget https://dl.eff.org/certbot-auto chmod a+x ./certbot-auto
使用certbot-auto 生成泛域名
具体命令如下:
./certbot-auto certonly -d *.ssyer.com --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory
这里你可以使用多个 -d 比如 -d *.ssyer.com -d *.cdn.ssyer.com
第一次运行会安装依赖,遇到的问题有:OSError: Command /opt/eff.org/certbot/venv/bin/python2.7 - setuptools pkg_resources pip wheel failed with error code 2
这个问题是由于版本太旧,可通过如下命令解决:
pip install setuptools pip install --upgrade setuptools pip install virtualenv pip install --upgrade virtualenv
如果出现 setuptools pkg_resources pip wheel failed with error code 1
可参考 https://github.com/certbot/certbot/issues/2883
接着会要求你添加一条txt解析: _acme-challenge.ssyer.com ,你添加后 通过 dig _acme-challenge.ssyer.com txt 命令查看是否生效,生效后按 enter 即可。
复制证书到阿里云杭州服务器,我写了coyp_letsencrypt 脚本:
cd /etc/ zip -r letsencrypt.zip letsencrypt scp letsencrypt.zip root@120.27.221.225:/etc/ rm letsencrypt.zip ssh -v root@120.27.221.225
然后在杭州的服务器上写了 letsencrypt 脚本:
cd /etc/ rm -rf letsencrypt unzip letsencrypt.zip rm -rf letsencrypt.zip nginx -s reload
更新或者生成证书的流程变为了先执行 ./certbot-auto certonly -d *** 生成或更新证书,接着执行 ./coyp_letsencrypt ,接着执行 ./letsencrypt 即可顺利完成啦。