利用acme.sh 申请 Google 免费证书

1.Google API权限准备

获取 EAB 密钥 ID 和 HMAC

  1. 登录你的 GCP 控制台面板,进入 Public Certificate Authority API 管理页面(console.cloud.google.com/apis/librar...)点击启动:

或者直接在下一步的 Cloud Shell 中使用下面的命令启动也可以:

bash 复制代码
gcloud services enable publicca.googleapis.com
  1. 点击右上角的菜单栏激活 Cloud Shell,输入下面内容选中项目,如果你只有一个项目的话可以跳过这步,会自动设置为唯一项目:

    gcloud config set project project ID

或者先使用下面的命令创建一个项目然后再选择该项目:

arduino 复制代码
gcloud projects create [project ID]
gcloud config set project [project ID]
  1. 获取 EAB 密钥 ID 和 HMAC:

    gcloud publicca external-account-keys create

中途弹窗点击授权之后会返回下列格式的信息,记录下来后面会用到:

makefile 复制代码
Created an external account key
[b64MacKey: xxxxxxxxxxxxxxxxxxxxxxx
keyId: xxxxxxxxxxxxxxx]

* 获取的 EAB 密钥 7 天内有效,超过 7 天未使用该密钥会失效,注册的 ACME 帐号没有有效期。

2.申请证书

默认以 root 用户进行操作演示。

安装 acme.sh

arduino 复制代码
curl  https://get.acme.sh | sh

若后面出现 command not found,则需要手动执行以下命令:

bash 复制代码
source ~/.bashrc

签发证书

这里以使用 Cloudflare 的 API 为例,通过 DNS 验证申请 Apex 域名和通配符(example.com 和 *.example.com)证书。

  1. 获取 Cloudflare API,可以自己选择全局 API 还是单域 API,建议创建单域 API 并限制访问 IP 以提高安全性,获取到 API 后注意保存,然后导入:

    export CF_Token="xxxxxxxxxxxxxxxxxxxxxxxx" export CF_Account_ID="xxxxxxxxxxxxxxxxxxxxxxxx" export CF_Zone_ID="xxxxxxxxxxxxxxxxxxxxxxxx"

其中 CF_Token 为你获取到的 API 密钥,CF_Account_ID 和 CF_Zone_ID 可以在你域名概述页面侧边栏的 API 分栏看到。

  1. 向 Google Public CA 注册 ACME 帐号:

    acme.sh --register-account -m 邮箱 --server google

    --eab-kid 申请到的 keyId

    --eab-hmac-key 申请到的 b64MacKey

我在第一次注册的时候提示错误:

arduino 复制代码
Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 6

无法解析 host,想了下应该是我的 acme.sh 是很久以前安装的,没有开启自动更新,使用 acme.sh --upgrade 命令更新一下就好了,或者将上面的 --server google 改成 --server https://dv.acme-v02.api.pki.goog/directory 手动指定服务器。

  1. 设置默认 CA:

    acme.sh --set-default-ca --server google

  2. 签发 RSA 证书:

    acme.sh --issue --dns dns_cf -d example.com -d *.example.com --keylength 2048

* 签发 ECC 证书:

css 复制代码
acme.sh --issue --dns dns_cf -d example.com -d *.example.com --keylength ec-256
  1. 最后将证书安装到 Nginx 下:

    acme.sh --install-cert -d example.com

    --key-file /path/to/ssl/private.key

    --fullchain-file /path/to/ssl/fullchain.pem

    --capath /path/to/ssl/ca.pem

    --reloadcmd "service nginx reload"

* 安装 ECC 证书:

css 复制代码
acme.sh --install-cert -d example.com --ecc \
--key-file       /path/to/ssl/ecc_private.key  \
--fullchain-file /path/to/ssl/ecc_fullchain.pem \
--capath         /path/to/ssl/ecc_ca.pem  \
--reloadcmd      "service nginx reload"
相关推荐
孙启超12 分钟前
【AI开发之Rust】第 22 课:一键多平台与工程收尾 —— CI、发布检查与结课
开发语言·后端·rust
一条小小yu7 小时前
Spring IoC的理解
java·后端·spring
茉莉玫瑰花茶8 小时前
GO [ 方法 ]
开发语言·后端·golang
Wx-bishekaifayuan8 小时前
django个性化旅游路线推荐平台49005-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
Eric_见嘉9 小时前
在职前端 Skill 和 MCP 分享
前端·后端·agent
孟健10 小时前
出海开发者资金合规:从港卡结汇到完税申报实操
后端·架构
乌暮10 小时前
深入理解 Java 泛型:把「万能盒子」用对、用稳
java·开发语言·后端·学习
架构技术专栏11 小时前
Skill 有效性与稳定性评估:用对照、重复与证据判断价值
后端
拔剑纵狂歌11 小时前
ClickHouse system.query_log 字段详解与排障实践
后端·clickhouse·1024程序员节
再吃一根胡萝卜11 小时前
把本地 RAG 问答做"准":多轮指代消解 + 云端语义向量 + TXT 章节切分
后端