09月29, 2019

Certbot 申请 LetsEncrypt 泛域名免费证书

准备工作

首先,要有一个域名,且使用 阿里云DNS 提供解析服务。

其次,要在阿里云 https://ram.console.aliyun.com/ 创建一个子账号并配置 RAM 权限AliyunDNSFullAccess,并为子账号生成AccessKey用于通过API管理DNS解析。

安装使用

这里我使用了 Python 虚拟环境的方式安装 Certbot,这样的好处是 pip 安装任何依赖包不会对当前系统造成任何影响。

系统版本

# lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID:    CentOS
Description:    CentOS Linux release 7.6.1810 (Core) 
Release:    7.6.1810
Codename:    Core

配置环境

yum install python36 -y

mkdir -p /opt/soft/tool/certbot/
cd /opt/soft/tool/certbot/
python3 -m venv venv
source venv/bin/activate

pip install certbot certbot-nginx certbot-dns-aliyun

版本信息

# pip freeze
acme==0.38.0
asn1crypto==0.24.0
certbot==0.38.0
certbot-dns-aliyun==0.38.1
certbot-nginx==0.38.0
certifi==2019.9.11
cffi==1.12.3
chardet==3.0.4
ConfigArgParse==0.14.0
configobj==5.0.6
cryptography==2.7
distro==1.4.0
dns-lexicon==3.3.3
future==0.17.1
idna==2.8
josepy==1.2.0
mock==3.0.5
parsedatetime==2.4
pycparser==2.19
pyOpenSSL==19.0.0
pyparsing==2.4.2
pyRFC3339==1.1
pytz==2019.2
PyYAML==5.1.2
requests==2.22.0
requests-file==1.4.3
requests-toolbelt==0.9.1
six==1.12.0
tldextract==2.2.1
urllib3==1.25.6
zope.component==4.5
zope.deferredimport==4.3.1
zope.deprecation==4.4.0
zope.event==4.4
zope.hookable==4.2.0
zope.interface==4.6.0
zope.proxy==4.3.2

配置AK

# cat /opt/soft/tool/certbot/credentials.ini
certbot_dns_aliyun:dns_aliyun_access_key = XXXXXXX
certbot_dns_aliyun:dns_aliyun_access_key_secret = XXXXXXXXX

# chmod 600 /opt/soft/tool/certbot/credentials.ini

申请证书

/opt/soft/tool/certbot/venv/bin/certbot certonly \
-a certbot-dns-aliyun:dns-aliyun \
--certbot-dns-aliyun:dns-aliyun-credentials /opt/soft/tool/certbot/credentials.ini \
-d fandenggui.com \
-d "*.fandenggui.com"

成功申请后,会有提示证书的存放位置。

定时任务

这里根据官方提供的方法,进行证书自动续订即可。 https://certbot.eff.org/lets-encrypt/centosrhel7-nginx

0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && /opt/soft/tool/certbot/venv/bin/certbot renew

参考资料

本文链接:https://fandenggui.com/post/certbot-dns-aliyun-letsencrypt.html

-- EOF --

Comments