ACME Client自動申請憑證(docker搭配ACME container daemon走 standalone模式) --- > 不想在系統上安裝ACME帶來的套件, > 利用docker版本來產生憑證。 > 本篇採用standalone模式的分享, > 使用此模式不用額外架設驗證需要的http 80埠服務。 ### 環境準備與條件 1. 防火牆設置port forwarding 將實體IP位址的80埠到運行的主機IP的80埠。 2. 要申請的domain要指向運行上述的外部IP,在自動簽發過程let's encrypt才能正確驗證。 3. 運行的主機不得有已經占用的80 port服務。 4. 主機要有安裝docker是必要條件,若沒有請參照官方說明。 說明: standalone模式,會在自動申請憑證過程,短暫的建立http服務, 來完成驗證程序,在驗證完成後馬上就會關閉,不用擔心常開被攻擊的疑慮。 ### 執行範例 > 示範執行方式,最終會產生憑證, > 平常可以透過排程定期檢查更新憑證, > 如果到期會自動執行產生新的憑證, > 至於怎麼自動化放到自己的環境, > 依照自己環境做設計。 ##### 建立工作目錄並切換到該目錄 mkdir -p acme/out cd acme ##### 取得 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.sh neilpang/acme.sh daemon ##### 初始操作 #將服務改成 letsencrypt docker exec -it acme.sh --set-default-ca --server letsencrypt #版本更新 docker exec -it acme.sh --upgrade #註冊 docker exec -it acme.sh --register-account -m 你的mail address ##### 簽發憑證 > 因為很窮,所以平常用 duckdns.org 的免費網域做示範教學 > 所以沒有可以www起頭 #執行自動產憑證 docker exec -it acme.sh --issue -d mydowmin.duckdns.org --standalone # 假設起頭說的條件都有完成,自動簽發的過程基本上是順利的 完成之後會在out/mydowmin.duckdns.org_ecc下產生 fullchain.cer 跟mydowmin.duckdns.org.key, 就可以拿去nginx去做測試套用在https憑證上。**注意 out 目錄內容之後不要刪除**。 ##### 自動更新憑證 > 執行更新指令的時候,如果沒到期,他什麼都不會做,只會顯示憑證尚未到期,到期日是哪天。 docker exec -it acme.sh --renew -d mydomain.duckdns.org --standalone ##### 策略設計 平常可以把更新憑證寫script設計流程,並作為排程定期運行, 每次執行後,可以檢查正式nginx上的憑證跟out下的有沒有一致, 如果不一致代表更新了,就更名備份舊憑證然後再把新的放上去, 然後reload或restart nginx服務。 如果沒辦法自己做到設計script就求助GPT寫script或者自己人工去換吧。 或許也可以將產生路徑跟nginx讀取憑證路徑做整合,也是可以減少額外的設計。 本篇主旨在於對系統做其他安裝,在docker container下產生憑證。
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.