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

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

37次閱讀
尚無留言

共计 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

正文完
 0
評論(尚無留言)