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

安装 acme 工具

# 提前安装依赖
sudo apt install socat

# 切换为 root 用户, 后边的操作均使用 root 用户(acme 官方推荐)
sudo -i

# wget 默认下载到文件, 使用 '-' 表示输出到标准输出, 经管道提供给 sh 执行
wget -O - https://get.acme.sh | sh -s email=[email protected]
或者
# curl 默认下载到标准输出
curl https://get.acme.sh | sh -s email=[email protected]

安装会完成以下内容:

  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 解析配置界面为例:

ubuntu 使用 acme 工具免费申请 SSL 证书_第1张图片

使用这种方式时, 没法自动续签证书, 只能每 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 模式除外), 也可以手动强制更新证书, 当然快要到期时会自动给 [email protected] 发送邮件

$ acme.sh --renew -d example.com --force --ecc

你可能感兴趣的:(ubuntu,https,ssl,linux)