ACME Client自動申請憑證(Let's Encrypt IP憑證 + 短效期憑證) --- > 2026年1月 Let's Encrypt新增有效期6天的短效TLS憑證,同步推出IP位址憑證 > 跟原本網域的方式相同,只是參數變更 > 所以大部分的內容會雷同 ### 環境準備與條件 1. 防火牆設置port forwarding 將實體IP位址的80埠到運行的主機IP的80埠。 2. 運行的主機不得有已經占用的80 port服務。 3. 主機要有安裝docker是必要條件,若沒有請參照官方說明。 說明: standalone模式,會在自動申請憑證過程,短暫的建立http服務, 來完成驗證程序,在驗證完成後馬上就會關閉,不用擔心常開被攻擊的疑慮。 ### 執行範例 > 示範執行方式,最終會產生憑證, > 平常可以透過排程定期檢查更新憑證, > 如果到期會自動執行產生新的憑證, > 至於怎麼自動化放到自己的環境, > 依照自己環境做設計。 ##### 建立工作目錄並切換到該目錄 mkdir -p acme_ip/out cd acme_ip ##### 取得 acme 以及執行 acme container daemon 模式 > container把out掛載到實體目錄,方便整合、重複建立container或取用。 > 為了跟網域版區隔,我們用 acme_ip 命名 container name。 docker pull neilpang/acme.sh docker run -d -v "$(pwd)/out":/acme.sh -p 80:80 --name=acme_ip neilpang/acme.sh daemon ##### 初始操作 #將服務改成 letsencrypt docker exec -it acme_ip --set-default-ca --server letsencrypt #版本更新 docker exec -it acme_ip --upgrade #註冊 docker exec -it acme_ip --register-account -m 你的mail address ##### 簽發憑證 > 簽完之後,其實掛上去簡單看一下效期,大約是官方新聞的160小時, > **--days 5** 應該是多餘的,有驗證的話再拿掉。 #執行自動產短效期憑證 docker exec -it acme_ip --issue -d 實體IP --certificate-profile shortlived --days 5 --standalone # 假設起頭說的條件都有完成,自動簽發的過程基本上是順利的 完成之後會在out/實體IP_ecc下產生 實體IP.cer 跟實體IP.key, 就可以拿去nginx去做測試套用在https憑證上。**注意 out 目錄內容之後不要刪除**。 ##### 自動更新憑證 > 執行更新指令的時候,如果沒到期,它什麼都不會做,只會顯示憑證尚未到期,下次可更新是哪天(4天之後),。 docker exec -it acme_ip --renew -d 實體IP --standalone ##### 策略設計 平常可以把更新憑證寫script設計流程,並作為排程定期運行, 每次執行後,可以檢查正式nginx上的憑證跟out下的有沒有一致, 如果不一致代表更新了,就更名備份舊憑證然後再把新的放上去, 然後reload或restart nginx服務。 如果沒辦法自己做到設計script就求助GPT寫script或者自己人工去換吧。 或許也可以將產生路徑跟nginx讀取憑證路徑做整合,也是可以減少額外的設計。 本篇主旨在於對系統做其他安裝,在docker container下產生憑證。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up