🚨 官方域名僅限: gebu8f.page / gebu8f.de / gebu8f.hidns.co
若見到其他相似網站,皆非本人所有,請勿相信。

Cloudflare 原始憑證 API 自動化教學(15 年有效期)

22次閱讀
尚無留言

共計 2674 個字符,預計需要花費 7 分鐘才能閱讀完成。

你是不是也厭倦了用 ACME + Cloudflare DNS 一步步搞 SSL 憑證?

你是不是發現 Cloudflare 後台可以點選「原始憑證」卻無法自動化處理?

這篇文章就是你要的解答:

🌟 Cloudflare 的 Origin Certificate API 支援申請最長達 15 年的原始憑證(5475 天有效)!

⚠️ 但請注意:這類憑證僅供 Cloudflare 作為 CDN 前端連接你的源站時使用,所以你一定要開啟小黃雲(代理模式),否則瀏覽器會出現「不受信任的憑證」錯誤提示,因為這不是 Let’s Encrypt、ZeroSSL 或 Google Trust 等受信任的公眾憑證。

首先你需要有 Global API Key 和 Email 和 CSR

感謝 NS 的 bananapork 給我靈感,他提問请问能用 api 申请 cloudflare 原点凭证吗,我原本是說不行的但他提供了 cloudflare api 文件 https://developers.cloudflare.com/api/resources/origin_ca_certificates/ 於是我去嘗試,發現困難很多

Cloudflare 原始憑證 API 自動化教學(15 年有效期)

先確定你的域名是掛在 cf 上的

申請教學

首先,先生成 CSR

openssl req -new -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr -subj "/CN=your domain.link"

YOUR_GLOBAL_API_KEY 拿取路徑https://dash.cloudflare.com/profile/api-tokens

Cloudflare 原始憑證 API 自動化教學(15 年有效期)

再來是申請 cf 原始伺服器認證(調用 api)

csr_content=$(awk 'NF {sub(/\r/,""); printf "%s\\n",$0;}' domain.csr)
curl -X POST https://api.cloudflare.com/client/v4/certificates \
-H "Content-Type: application/json" \
-H "X-Auth-Email: [email protected]" \
-H "X-Auth-Key: YOUR_GLOBAL_API_KEY" \
-d "{\"hostnames\": [\"yourdonain.com\", \"*.yourdonain.com\"],
\"requested_validity\": 5475,
\"request_type\": \"origin-rsa\",
\"csr\": \"${csr_content}\"
}"

你會成功拿起這些東西,備註:我 ssl 憑證已經吊銷了,所以這個是不能用的

{"success":true,"result":{"id":"29962756715927851586227701003916828159346543595","certificate":"-----BEGIN CERTIFICATE-----\nMIIEojCCA4qgAwIBAgIUBT+TlCL3hT37kEQBLUyeAZs5C+swDQYJKoZIhvcNAQEL\nBQAwgYsxCzAJBgNVBAYTAlVTMRkwFwYDVQQKExBDbG91ZEZsY.....ltaF8v\nglcQKnH9KDUmxTtDEZcpyQKWkrpWZ26oPmh5svJej3bBYVJKSOx59AmwxIbNIZHd\n9ZEfYJGggpbUMQv6COLW2TS1W6mbMf9LaJ0H/gCjR9UU7o+9LqKZYPdKJ21Z8wl1\n9v0hh1h+ZlcD+....nMAYIKwYBBQUHMAGGJGh0dHA6Ly9vY3NwLmNsb3VkZmxhcmUuY29tL29yaWdpbl9j\nYTAlBgNVHREEHjAcgg0qLmdlYnU4Zi5saW5rggtnZWJ1OGYubGluazA4BgNVHR8E\....RxzIBFJsZ9csFKP64l/OB8JPhs7J2tJhDkYeovny6zVDRDJtxI\nVwS3rU+14iuRV16zTA8pAge1ZDOn3xR8qg55GU86phwyWUYdE24=\n-----END CERTIFICATE-----\n","expires_on":"2040-06-19 12:48:00 +0000 UTC","request_type":"origin-rsa","hostnames":["*.xxx.com","xxx.com"],"csr":"-----BEGIN CERTIFICATE REQUEST-----\nMIICWzCCAUMCAQAwFjEUMBIGA1UEAwwLZ2VidThmLmxpbmswggEiMA0GCSqGSIb3\nDQEBAQUAA4IBDwAwggEKAoIBAQCUM44flhB0fQGE+7uwzrYyhbFbSTnT2wkLntTR\.....ppqRx7iM/R0CMO2JfpDIwDzKX9buXMlGwmp....dkmWEfbC4Ci+Wrt98g87aicjm\nt9UVzEpU4kNbsKZyucdDJZtcGVVIw5EUeutuRXiL6A==\n-----ENDCERTIFICATE REQUEST-----\n","requested_validity":5475},"errors":[],"messages":[]}

其中 —–BEGIN CERTIFICATE—– 是 fullchain.pem

—–BEGIN CERTIFICATE REQUEST—– 是 ca.pem

而你剛才生成的 openssl req -new -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr -subj "/CN=your domain.com" 的 domain.key 是私鑰

注意:\n 是換行

腳本

因為上面那個需要單獨換行於是出現了下面腳本

在站點管理器有推出

bash <(curl -sL https://gitlab.com/gebu8f/sh/-/raw/main/nginx/install.sh)

單獨腳本

bash <(curl -sL https://gitlab.com/gebu8f/sh/-/raw/main/cf_origin_ssl/cf_cert.sh)>

也可以支持一下按個 star 的倉庫

https://gitlab.com/gebu8f/sh/-/tree/main

gebu8f

Author: gebu8f


探索更多來自 GEBU8F — 阿蒲的網站 的內容

訂閱即可透過電子郵件收到最新文章。

正文完
 0
gebu8f
版權聲明:本站原創文章,由 gebu8f 于2025-06-23發表,共計2674字。
转载说明:除特殊說明外本站文章皆由CC-4.0協議發布,轉載請註明出處。

禁止人身攻擊,請理性發言。

評論(尚無留言)

    探索更多來自 GEBU8F — 阿蒲的網站 的內容

    立即訂閱即可持續閱讀,還能取得所有封存文章。

    繼續閱讀