[GH-ISSUE #1150] [Feature] webhook的模板变量添加base64版本 #776

Closed
opened 2026-03-03 01:05:55 +03:00 by kerem · 4 comments
Owner

Originally created by @thun888 on GitHub (Jan 8, 2026).
Original GitHub issue: https://github.com/certimate-go/certimate/issues/1150

Description / 功能描述

Adguard Home的api使用的是base64处理后的证书,可否添加这一系列的模板变量

Image

Motivation / 请求动机

增强webhook部署

Miscellaneous / 其他

No response

Contribution / 贡献代码

  • I am interested in contributing a PR for this! / 我乐意为此提交代码并发起 PR!
Originally created by @thun888 on GitHub (Jan 8, 2026). Original GitHub issue: https://github.com/certimate-go/certimate/issues/1150 ### Description / 功能描述 Adguard Home的api使用的是base64处理后的证书,可否添加这一系列的模板变量 <img width="1044" height="1168" alt="Image" src="https://github.com/user-attachments/assets/0dee8bfa-adee-43ae-a9f4-2774fcc45e23" /> ### Motivation / 请求动机 增强webhook部署 ### Miscellaneous / 其他 _No response_ ### Contribution / 贡献代码 - [x] I am interested in contributing a PR for this! / 我乐意为此提交代码并发起 PR!
kerem 2026-03-03 01:05:55 +03:00
Author
Owner

@fudiwei commented on GitHub (Jan 8, 2026):

PEM 格式本身已经是 Base64 编码的了,这个是还要对 PEM 文本再次 Base64?

<!-- gh-comment-id:3723815458 --> @fudiwei commented on GitHub (Jan 8, 2026): PEM 格式本身已经是 Base64 编码的了,这个是还要对 PEM 文本再次 Base64?
Author
Owner

@thun888 commented on GitHub (Jan 8, 2026):

<!-- gh-comment-id:3723847260 --> @thun888 commented on GitHub (Jan 8, 2026): 嗯
Author
Owner

@fudiwei commented on GitHub (Jan 8, 2026):

不打算支持。

各种 HTTP 接口要求的参数千奇百怪的,我已经见过的:

  • 要求证书和私钥拼接在一起的;
  • 要求文件内容不包含开头和结尾的 -----BEGIN CERTIFICATE----------END CERTIFICATE-----的;
  • 要求文件内容不能有换行符的;
  • 要求文件内容换行符必须是 \r\n 的;
  • 要求证书链中间不能有空白行的;
  • 要求证书链包含系统根证书的;
  • ……

情况太多了,没办法一一满足这类边缘场景。

这种情况我建议要么自己再写一个简单的 Webhook 中转层;要么可以先部署证书到本地主机、然后利用后置命令来执行一段 Shell 脚本,通过 curl 来请求:

#!/bin/bash

# 安装 curl。仅 Docker 部署时需要,因为基镜像 alpine 本身啥也没有
if ! command -v curl >/dev/null 2>&1; then
  apk add --no-cache curl
fi

# 保存到本地的路径
CERT_FILE="/path/to/your/cert.pem"
KEY_FILE="/path/to/your/priv.key"

# 文件转 Base64
CERTIFICATE_CHAIN=$(cat "$CERT_FILE" | base64 | tr -d '\n')
PRIVATE_KEY=$(cat "$KEY_FILE" | base64 | tr -d '\n')

# 构建 JSON
JSON_DATA=$(cat <<EOF
{
  "enable": true,
  "server_name": "example.com",
  "certificate_chain": "$CERTIFICATE_CHAIN",
  "private_key": "$PRIVATE_KEY"
}
EOF
)

# 发送请求
curl -X POST \
  http://your-url \
  -H "Content-Type: application/json" \
  -d "$JSON_DATA"
<!-- gh-comment-id:3723952920 --> @fudiwei commented on GitHub (Jan 8, 2026): 不打算支持。 各种 HTTP 接口要求的参数千奇百怪的,我已经见过的: - 要求证书和私钥拼接在一起的; - 要求文件内容不包含开头和结尾的 `-----BEGIN CERTIFICATE-----`、`-----END CERTIFICATE-----`的; - 要求文件内容不能有换行符的; - 要求文件内容换行符必须是 `\r\n` 的; - 要求证书链中间不能有空白行的; - 要求证书链包含系统根证书的; - …… 情况太多了,没办法一一满足这类边缘场景。 这种情况我建议要么自己再写一个简单的 Webhook 中转层;要么可以先部署证书到本地主机、然后利用后置命令来执行一段 Shell 脚本,通过 curl 来请求: ```shell #!/bin/bash # 安装 curl。仅 Docker 部署时需要,因为基镜像 alpine 本身啥也没有 if ! command -v curl >/dev/null 2>&1; then apk add --no-cache curl fi # 保存到本地的路径 CERT_FILE="/path/to/your/cert.pem" KEY_FILE="/path/to/your/priv.key" # 文件转 Base64 CERTIFICATE_CHAIN=$(cat "$CERT_FILE" | base64 | tr -d '\n') PRIVATE_KEY=$(cat "$KEY_FILE" | base64 | tr -d '\n') # 构建 JSON JSON_DATA=$(cat <<EOF { "enable": true, "server_name": "example.com", "certificate_chain": "$CERTIFICATE_CHAIN", "private_key": "$PRIVATE_KEY" } EOF ) # 发送请求 curl -X POST \ http://your-url \ -H "Content-Type: application/json" \ -d "$JSON_DATA" ```
Author
Owner

@thun888 commented on GitHub (Jan 8, 2026):

好的👌

<!-- gh-comment-id:3723964913 --> @thun888 commented on GitHub (Jan 8, 2026): 好的👌
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/certimate#776
No description provided.