ubuntu 使用 acme 工具免费申请 SSL 证书

  • Post author:
  • Post category:其他




安装 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

安装会完成以下内容:

  1. 创建安装目录

    ~/.acme.sh

    , 即

    /root/.acme.sh
  2. 创建别名

    alias acme.sh=~/.acme.sh/acme.sh
  3. 创建一个定时任务(用于证书的续签)
# 查看定时任务
$ 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 版权协议,转载请附上原文出处链接和本声明。