之前的文章 使用acme.sh签发证书 介绍了强大的证书自动管理工具 acme.sh 的用法。但是如果服务器在国内,则一些用法需要改变。
首先是安装的源变了,需要从 gitee 安装,否则 github 上的资源无法顺利拉下来:
git clone https://gitee.com/neilpang/acme.sh.git
cd acme.sh
./acme.sh --install -m 你的邮箱 # 使用example.com结尾的邮箱可能会的导致签发时出错
安装好后,可执行文件还是在 ~/.acme.sh 目录下。
既然是在国内服务器上签发证书,正常来说下相应的资源也是在国内。我这里的域名托管在 阿里云,为了使用通配符证书需要用到DNS认证,需要获取阿里云API的access key。
登录 阿里云 后,鼠标移到右上角的头像,选择“AccessKey管理”,然后在新页面的弹框中选择“开始使用子账户AccessKey”,然后在新页面中选择“创建用户”,登录名称可以写”acme”等,勾选“Open API调用访问”。
创建用户后,复制AccessKey ID和AccessKey Secret(记得复制保存好,页面关闭后AccessKey Secret无法再次获取!),将其写入到 ~/.bashrc 文件中:
export Ali_Key="xxx"
export Ali_Secret="xxx"
source ~/.bashrc
接着授予用户权限,在权限列表中输入dns,勾选“管理HTTPDNS的权限” 和 “管理云解析(DNS)的权限”:
接下来就可以使用 acme.sh 签发证书了:
~/.acme.sh/acme.sh --issue --dns dns_ali -d '*.你的域名'
~/.acme.sh/acme.sh --install-cert -d '*.你的域名' \
--key-file /etc/nginx/ssl/域名.key --fullchain-file /etc/nginx/ssl/域名.pem \
--reloadcmd "service nginx force-reload"