1. Let's Encrypt 参考自 古道轻风
    • Let’s Encrypt 是一个由非营利性组织 互联网安全研究小组(ISRG)提供的免费、自动化和开放的证书颁发机构(CA)。
  2. acme.sh 参考官方 github 教程。
    • acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书。
  3. 本篇文章主要是根据acme.sh配置安装的,记录acme.sh配置的一些歧义地方。

安装 acme.sh

  1. 安装 acme.sh。
# 创建 .acme.sh 目录
mkdir ~/.acme.sh 

# 切换到 .acme.sh
cd ~/.acme.sh

# 执行安装命令,注意邮箱改成自己的
curl https://get.acme.sh | sh -s email=my@example.com
  1. 添加别名。
vi ~/.bashrc

# 把下面这行加入到最后
# alias acme.sh=~/.acme.sh/acme.sh

# 最后执行,使配置生效
source ~/.bashrc

生成证书

  1. 因为我的nginx在docker里,不确定nginx的方式能否可行。
  2. 所以采用的手动 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