iT邦幫忙

0

Let's Encrypt IP憑證 + 短效期憑證 使用docker跑 ACME Client

  • 分享至 

  • xImage
  •  

環境準備與條件

  1. 防火牆設置port forwarding 將實體IP位址的80埠到運行docker跑acme的主機IP的80埠。

  2. 運行的主機不得有已經占用的80 port服務。

  3. 主機要有安裝docker是必要條件,若沒有請參照官方說明。

說明:
standalone模式,會在自動申請憑證過程,短暫的建立http服務,
來完成驗證程序,在驗證完成後馬上就可以關閉,不用擔心常開被攻擊的疑慮。

執行範例

示範執行方式,最終會產生憑證,
平常可以透過排程定期檢查更新憑證,
如果到期會自動執行產生新的憑證,
至於怎麼自動化放到自己的環境,
依照自己環境做設計。

建立工作目錄並切換到該目錄
mkdir -p acme_ip/out
cd acme_ip
取得 acme 以及執行 acme container daemon 模式

container把out掛載到實體目錄,方便整合、重複建立container或取用。

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
#註冊(網域流程我有跑這部分,IP流程這我沒跑也可以)  
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下產生憑證檔案,
就可以拿去nginx去做測試套用在https憑證上。注意 out 目錄內容之後不要刪除

自動更新憑證

執行更新指令的時候,如果沒到期,它什麼都不會做,只會顯示憑證尚未到期,到期日是哪天。

docker exec -it acme_ip --renew -d 實體IP --standalone
策略設計

平常可以把更新憑證寫script設計流程,並作為排程定期運行,
每次執行後,可以檢查正式nginx上的憑證跟out下的有沒有一致,
如果不一致代表更新了,就更名備份舊憑證然後再把新的放上去,
然後reload或restart nginx服務。

如果沒辦法自己做到設計script就求助GPT寫script或者自己人工去換吧。

或許也可以將產生路徑跟nginx讀取憑證路徑做整合,也是可以減少額外的設計。
本篇主旨在於對系統做其他安裝,在docker container下產生憑證不將acme.sh裝在實體系統。


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言