使用 acme.sh 获取证书

现如今网站使用 HTTPS 协议访问已是趋势所向,使用 HTTP 协议访问网站时浏览器会提示此网站不安全,造成访问用户的担忧,且搜索引擎也会降低对不支持 HTTPS 协议的网站的展示次数,故申请一个证书是时代之所趋。

安装 acme.sh

curl  https://get.acme.sh | sh -s email=my@example.com

将命令中的邮箱地址改为自己的邮箱地址,用于 CA 机构的注册。

建议先执行以下命令运行 acme.sh,初次运行 acme.sh 其会自动创建环境变量,下次运行便可以直接执行 acme.sh 而不需要指明路径。

~/.acme.sh/acme.sh

获取证书

获取证书前需要验证域名的所有权,一般使用 Webroot 网站根目录验证,DNS API 和独立验证三种方式。

Webroot 网站根目录验证

acme.sh  --issue  -d iostreamx.com -d www.iostreamx.com  --webroot  /home/wwwroot/mydomain.com/

其中选项 -d 后填写需要颁发证书的域名,选项 –webroot 后填写网站根目录的绝对路径。

DNS API

acme.sh 可以通过 DNS API 自动添加 TXT 记录进行域名验证,且支持 Cloudflare, DNSPod 等 DNS 解析商。

以 Cloudflare 为例,其他解析商操作查看官方教程

Cloudflare 有两种 DNS API,分别为 全局 API 和 API 令牌。

全局 API

登录 Cloudflare 控制台,选择你需要获取证书的域名。

点击右上角头像进入我的个人资料,选择 API 令牌,找到下方的 Global API Key 并点击查看。

复制 Global API Key,并将其和注册 Cloudflare 邮箱添加到环境变量

export CF_key="Global API Key"
export CF_Email="mail@iostreamx.com"

命令 acme.sh 使用 Cloudflare DNS API 方式进行域名验证并且颁发证书

acme.sh --dns dns_cf -d iostreamx.com -d www.iostreamx.com

API 令牌

在网站概述页面侧边栏找到 API,复制帐户 ID。

在 API 令牌 选项卡中点击 “创建令牌”,使用 ”编辑区域 DNS“ 模板,在区域资源中选择包括你需要获取证书的域名。

创建令牌,复制并保存好 Token。

⚠ 注意:该 Token 仅会展示一次,请妥善保存。

将 API Token 和 帐户 ID 添加到环境变量

export CF_Token="API Token"
export CF_Account_ID="帐户 ID"

命令 acme.sh 使用 Cloudflare DNS API 方式进行域名验证并且颁发证书

acme.sh --dns dns_cf -d iostreamx.com -d www.iostreamx.com

独立验证

独立验证需要服务器的 80 端口没有被占用,所以不推荐使用。

独立验证方式需要使用 socat。

CentOS

sudo dnf install -y socat

Ubuntu / Debian

sudo apt update
sudo apt install -y socat

执行以下命令进行域名验证并且颁发证书

acme.sh --issue -d iostreamx.com -d www.iostreamx.com --standalone

参考

  1. Home · acmesh-official/acme.sh Wiki
chevron_left
chevron_right

Leave a comment

您的电子邮箱地址不会被公开。 必填项已用*标注

Comment
Name
Email
Website