- Let's Encrypt 参考自 古道轻风。
- Let’s Encrypt 是一个由非营利性组织 互联网安全研究小组(ISRG)提供的免费、自动化和开放的证书颁发机构(CA)。
- acme.sh 参考官方 github 教程。
- acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书。
- 本篇文章主要是根据
acme.sh
配置安装的,记录acme.sh
配置的一些歧义地方。
安装 acme.sh#
- 安装 acme.sh。
# 创建 .acme.sh 目录
mkdir ~/.acme.sh
# 切换到 .acme.sh
cd ~/.acme.sh
# 执行安装命令,注意邮箱改成自己的
curl https://get.acme.sh | sh -s email=my@example.com
- 添加别名。
vi ~/.bashrc
# 把下面这行加入到最后
# alias acme.sh=~/.acme.sh/acme.sh
# 最后执行,使配置生效
source ~/.bashrc
生成证书#
- 因为我的nginx在docker里,不确定nginx的方式能否可行。
- 所以采用的手动 dns 验证。我用的华为云参考https://github.com/acmesh-official/acme.sh/wiki/dnsapi2#dns_huaweicloud。
# 配置环境变量
export HUAWEICLOUD_Username="<Your IAM Username>"
export HUAWEICLOUD_Password="<Your Password>"
export HUAWEICLOUD_DomainName="<Your DomainName>"
# 再执行
acme.sh --issue --dns dns_huaweicloud -d example.com -d *.example.com
安装证书#
acme.sh --install-cert -d example.com \
--key-file /path/to/keyfile/in/nginx/key.pem \
--fullchain-file /path/to/fullchain/nginx/cert.pem \
--reloadcmd "docker exec -it nginx nginx -s reload"
更新证书#
$ crontab -l
44 6 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null