跳至主要內容
Mark Ku's Blog

問題

現今大多數網站基於各種理由都需要支援 https,但剛開始經營網站時,會使用很多免費的 Https 憑證,最有名的是 let's encrypt,但這些憑證通常只有三個月的期效,每三個月過後要延展或手動重新申請,要達成 ACME http challenge和 DNS challenge ( 萬用憑證 ) 或透過 nginx 延長憑證,都是一件很麻煩的事。

倘若想要取得萬用憑證 *.abc.com 都是得達成 DNS challenge,非常的麻煩,因此自己寫一個腳本,快速取得 let's encrypt 免費憑證。

DNS 驗證流程

先回顧 DNS Challenge 的流程

  1. 向 let's encrypt 取得驗證內容
  2. 在 DNS 主機加上 Let's encrypt 指定 TXT 記錄
  3. 取得憑證
  4. 移除 主機加上 Let's encrypt 先前指定的 TXT 記錄

實作的想法

像 Godaddy 及 Cloud flare 比較大的域名服務商,都支援 API Token 的方式,透過腳本( script ) 指令,去更新 DNS 值。

域名供應商不支援 API 更新 DNS 設定。

在購買 TW 的相關的域名在 Godaddy 或 Cloudflare 購買域名,比台灣的域名供應商每年貴了快 300 元以上,且台灣的域名供應商,多半不支援透過 API KEY 修改 DNS,因此我將域名免費託管在 Godaddy,方便透過去 API 修改相關的設定值。

撰寫 Power shell 腳本

調整 Powershell 執行權限

Set-ExecutionPolicy RemoteSigned

安裝 Posh-ACME 模組

Install-Module -Name Posh-ACME

Godaddy 的腳本 (godaddy-dns-challenge.ps1)

Set-PAServer "LE_Prod"

$pArgs = @{GDKey="輸入Godaddy API KEY";GDSecret="輸入Godaddy Secret"}         

 New-PACertificate *.letgo.com.tw -FriendlyName *.letgo.com.tw -PfxPass password01 -AcceptTOS -Contact [email protected] -DnsPlugin GoDaddy -PluginArgs $pArgs
 
Get-PACertificate | fl *

Cloudflare 的腳本 ( cloudflare-dns-challenge.ps1 )

Set-PAServer "LE_Prod"
$secToken = "輸入你的 Cloud Flare API 金鑰"
$pArgs = @{ CFToken = $secToken }
New-PACertificate *.letgo.com.tw -FriendlyName *.letgo.com.tw -PfxPass password01 -AcceptTOS -Contact [email protected] -DnsPlugin CloudFlare -PluginArgs $pArgs
Get-PACertificate | fl *

監測憑證失效的工具

除了先前文章所提到的 uptime-kuma 可以在憑證失效的 7天、14天、21天憑證過期前會提醒。此外 LetsMonitor 也提供免費 SSL 憑證到期提醒與監測,可以當個備案。

LetsMonitor編輯憑證有效性監控設定
LetsMonitor編輯憑證有效性監控設定

結論

透過大型域名供應商的 API,透過腳本去達成 let's encrypt Http DNS 驗證,是相當方便的,搭配排程透執行指令的方式,就算是一次管理1000台,我想應該也是沒問題,不花錢又能使用免費的 Https 憑證,想起來就讓人開心。

執行畫面
PowerShell視窗顯示Let's Encrypt憑證檔案列表

參考資料1

參考資料2

參考資料3

參考資料4

作者

Mark Ku

10 年以上的軟體工程師,做過北美電商與 AI SaaS 訂閱收費系統。閱讀更多

覺得這篇有幫助?

作者做的免費工具、每日 Podcast 與電子報,都在這裡。

Mark Ku · 本文採用 CC BY 4.0 授權,轉載請註明作者並附上原文連結。

留言

訂閱電子報

訂閱後即時收到新文章通知,不錯過任何技術分享。

提交即表示同意接收電子報,隨時可。

站長的公司

Vibe Coding 架構規劃與陪跑

團隊已經用 AI 做出小工具,卻怕壞了沒人修、需求一變就不敢改?226 Network 幫你把程式放進 Git、密碼另外保管、排程搬上固定主機,再補上交接文件與測試。

熱門文章

View all
Mark Ku
··634

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案
Mark Ku
··471

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南
Mark Ku
··267

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略
Mark Ku
··214

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1
Mark Ku
··210

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調
Mark Ku
··209

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取