找回密碼
 立即註冊
惟家LINE群QRCODE
    查看: 66|回覆: 0

    群暉利用acme申請自己的SSL証書並自動更新!

    [複製鏈接]

    !lvup!   100%

    363

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22005764
    發表於 2023-8-21 03:37:10 | 顯示全部樓層 |閱讀模式
    群暉利用ACME去申請SSL証書的是非常好用!接下來需要用到Docker去拉acme
    在套件中心裡安裝Docker 利用Docker 去拉acme
    記得拉3.0.6版~目前3.0.7版測試無法更新証書!!




    好了之後開始佈署



    將容器名稱修改爲:acme306
    進階設定->啟用 打勾自動重啟 ->儲存空間->新增資料夾 -> 將/docker/acme目錄對映到容器里的/acme.sh目錄 -> 網路中勾選使用與 Docker Host 相同的網路->  環境設定 -> 新增下面的環境變數 ->執行命令 ->在命令欄新增-> daemon(打開容器的守護程序)-> 新增環境變數 如下

    SYNO_Username 群暉使用者ID

    SYNO_Password 群暉使用者密碼

    SYNO_Port 群暉使用PORT 我設定為443

    SYNO_Hostname nas.example.net (NAS的域名)

    SYNO_Scheme httpshttp (在此我用https)

    SYNO_Device_Name  CertRenewal (隨便填 acme官方內建寫這個名字)

    SYNO_Certificate example.net (申請的域名 申請泛域名 可以適用在 *.example.net

    SYNO_Create 1 (強制建立証書 如果目錄下沒有的話)

    GOOGLEDOMAINS_ACCESS_TOKEN (因為我是用Google Domaoin 這裡是填API KEYGOOGLE DOMAIN裡的ACME DNS API 裡建立的KEY)

    =(因為是用Zero SSL申請 所以要先去ZeroSSL建立帳號 https://zerossl.com/
    ACME_EAB_KID ZEROSSL (ZEROSSL帳號名字 比如XXX@gmail.com
    ACME_EAB_HMAC_KEY  (ZEROSSL的KEY
    KEY在網站的Developer ZeroSSL API Key
    都建立好後如下圖

    好了之後啟動acme306這個Docker


    接下來在/docker/acme建立腳本 名為runacme.sh 程式碼如下


    1. docker exec acme306 acme.sh --register-account -m XXX@gmail.com
    2. docker exec acme306 acme.sh --issue --dns dns_googledomains -d example.net -d *.example.net
    3. docker exec acme306 acme.sh --deploy -d "example.net" -d "*.example.net" --deploy-hook synology_dsm
    複製代碼
    XXX@gmail需改成自己的ZEROSSL帳號
    example.net 改成自己申請的域名


    在群暉的控制台裡 ->任務排程表->新增->排程任務->使用者定義指令碼->任務名稱隨便填->使用者帳號root->排程任務每個月執行一次->任務設定->使用者定義指令碼填入->確定

    新增:自動更新憑証代碼 把申請到的憑証 拷貝到群暉預設憑証路徑 因為用acme.sh --deploy-hook synology_dsm指令去佈署一直失敗 乾脆用暴力方式直接換掉預設憑証簡單直接!
    1. bash /volume1/docker/acme/runacme.sh >>/volume1/docker/acme/log.txt 2>&1
    2. #!/bin/bash
    3. hash=$(cat "/usr/syno/etc/certificate/_archive/DEFAULT")
    4. folder="/usr/syno/etc/certificate/_archive/"$hash

    5. scp /volume1/docker/acme/XXX.net_ecc/XXX.net.cer $folder/cert.pem
    6. scp /volume1/docker/acme/XXX.net_ecc/fullchain.cer $folder/fullchain.pem
    7. scp /volume1/docker/acme/XXX.net_ecc/xxx.net.key $folder/privkey.pem

    8. if [ -d "/usr/syno/etc/certificate/ReverseProxy" ]; then
    9.     cd /usr/syno/etc/certificate/ReverseProxy
    10.     for D in *; do
    11.         if [ -d "${D}" ]; then
    12.             cp -rf $folder/* ./"${D}"
    13.         fi
    14.     done
    15. fi

    16. cp -rf $folder/* /usr/syno/etc/certificate/system/default/
    17. #DSM 6 舊指令: synoservicectl --reload nginx
    18. #DSM 7 如下:synosystemctl restart nginx
    19. synoservicectl --reload nginx
    複製代碼

    /volume1/docker/acme/XXX.net_ecc/fullchain.cer 其為資料夾路徑~請自己行更改








    接下來可以先執行一遍 就會直接把SSL憑証申請好每個月檢查一次 直接更新在群暉的證書裡!非常方便!
    第一次執行後docker\log.txt看 會提示你在Google Domain新增一個DNS TXT記錄 接下來去你的Google Domain裡新增_acme-challenge.example.net 如下圖






    打完收工!











    本帖子中包含更多資源

    您需要 登入 纔可以下載或查看,沒有賬號?立即註冊

    ×
    您需要登入後纔可以回帖 登入 | 立即註冊

    本版積分規則

    Archiver|手機版|惟家的智能論壇

    GMT+8, 2026-9-24 13:19 , Processed in 0.100582 second(s), 31 queries .

    快速回覆 返回頂部 返回列表