安装 acme 工具
# 提前安装依赖
sudo apt install socat
# 切换为 root 用户, 后边的操作均使用 root 用户(acme 官方推荐)
sudo -i
# wget 默认下载到文件, 使用 '-' 表示输出到标准输出, 经管道提供给 sh 执行
wget -O - https://get.acme.sh | sh -s email=my@example.com
或者
# curl 默认下载到标准输出
curl https://get.acme.sh | sh -s email=my@example.com
安装会完成以下内容:
-
创建安装目录
~/.acme.sh
, 即
/root/.acme.sh
-
创建别名
alias acme.sh=~/.acme.sh/acme.sh
- 创建一个定时任务(用于证书的续签)
# 查看定时任务
$ crontab -l
48 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
最后不要忘了
source ~/.bashrc
, 不然别名没有生效
如果想卸载 acme 工具, 可以执行:
$ acme.sh --uninstall
$ rm -r ~/.acme.sh
签发 SSL 证书
使用 HTTP/HTTPS 验证
前提: 域名(假设为 example.com)绑定到了当前服务器的公网 IP 地址
Standalone 模式
该模式下, acme.sh 自动建立服务器来完成签发, 需要临时占用 80 或 443 端口(需要 root 权限, 所以上面需要切换为 root 用户)
# HTTP
acme.sh --issue -d example.com --standalone -k ec-256
# 或者使用 TLS
acme.sh --issue -d example.com --alpn --standalone -k ec-256
这里使用了 ec-256 秘钥, 性能比 rsa-4096 更好
可以通过 -d 参数指定多个子域名
acme.sh --issue -d example.com -d www.example.com --standalone -k ec-256
使用 DNS 手动验证
$ acme.sh --issue --dns -d example.com
得到以下输出:
Add the following txt record:
Domain:_acme-challenge.example.com
Txt value:9ihDbjYfTExAYeDs4DBUeuTo18KBzwvTEjUnSwd32-c
Please add those txt records to the domains. Waiting for the dns to take effect.
紧接着手动添加一条 TXT 类型的 DNS 解析记录
这里以阿里云的 DNS 解析配置界面为例:
使用这种方式时, 没法自动续签证书, 只能每 60 天手动更新一次 DNS 的解析配置
安装证书
将证书和密钥移动至
/home/admin
目录
$ acme.sh --installcert -d example.com --fullchainpath /home/admin/example.crt --keypath /home/admin/example.key --ecc
上文的 ec-256 属于 ECC 证书, 此处添加了
--ecc
选项
更新证书
默认会自动更新证书(DNS 模式除外), 也可以手动强制更新证书, 当然快要到期时会自动给 my@example.com 发送邮件
$ acme.sh --renew -d example.com --force --ecc
版权声明:本文为jiang_huixin原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。