快速建立可受信任的憑證與DDNS – DynuCertUpdater

好久沒有上傳github了,昨天接觸dynu之後,我發現有人可以直接dynu跟let’s encrypt整合,簽發一張DDNS環境下可受信任的憑證。

因此,我決定透過ChatGPT的力量以及瞭解dynu的經驗,為網路學習者打造一個非常簡單又快速就能靠建立一般環境下可受信任的憑證。

https://github.com/JNturtle/DynuCertUpdater/tree/main

此需要三步:

  1. 註冊dynu並取得api key
  2. (只需一次)執行 fetch.py 下載相依套件,然後執行 main.py ,在圖形化介面輸入IP、域名、api key等相關設定並執行,最後輸出憑證(crt、key、pfx)。
  3. 將憑證放入伺服器,使用註冊的域名連線。

註冊dynu並取得api key

這部份可以參考我之前寫得文章,取得dynu api key。

https://jnnetlab.com/home-assistant-%e6%8e%a8%e8%96%a6ddns%e4%bd%bf%e7%94%a8dynu

執行程式碼

首先要能執行python,如果沒有python環境,可至官網下載。(個人使用 3.11 版本。)

然後到本次的github去下載 fetch.py 與 main.py 。

安裝好python之後,就能執行 fecth.py,下載相依套件。※macOS 與 windows 都能用

然後執行 main.py

IP位置 輸入 憑證要安裝的伺服器IP,可以是私有IP,像是192.168.0.1等,不一定要公共IP。

Base Domain為dynu支援的列表

Host為名稱,名稱自定義。

若Host為「mydevice」、Base Domain為「accesscam.org」,完整域名Host.Base Domain為「mydevice.accesscam.org」。

Dynu API Key在Dynu API Credentials取得。

申請憑證 Email可以填入或是保持預設。

PFX密碼為PFX憑證包裝時所需,建議輸入密碼,但可以為空白。安裝PFX憑證亦需輸入相同密碼。

最後按下「更新並簽發憑證」,就會開始跑流程。

運作流程

會在dynu上查詢完整域名是否存在

不存在則建立

存在則更新

然後透過 ACME,產生CSR與私鑰,並進行DNS驗證與Challenge,Let’s Encrypt驗證通過後,回傳簽署的憑證鏈。

將簽署的憑證鏈、私鑰與兩者包裝在一起PFX輸出在程式碼所在的資料夾。

成果

我將PFX匯入到Aruba Controller,然後使用完整域名連線。