Stan Blog

學習過程中的一些記錄

使用 Let’s Encrypt Wildcard 萬用字元憑證

2018/01 後, Let’s Encrypt 推出 ACME v2 API 可以支援 Wildcard Certificates

使用 Wildcard Certificates 可以用一個憑證保護 base domain 下的數個 subdomain

Examples for DNS 01 hooks 這些別人包好的 script 裡面找到對應你使用的 DNS 服務

筆者使用 godaddy 所以用的是 le-godaddy-dns 這套

vps 環境: Ubuntu 16.04

安裝步驟:

  1. 安裝 python 的 dependencies

    $ sudo apt-get install python3 python3-pip curl
    
  2. 設定 workplace

    $ ROOTDIR=$HOME/letsencrypt
    $ mkdir -p $ROOTDIR
    $ cd $ROOTDIR
    
  3. 安裝所需 plugin

    # get letsencrypt.sh
    $ git clone https://github.com/lukas2511/dehydrated
    
    # get le-godaddy-dns
    $ git clone https://github.com/josteink/le-godaddy-dns
    
    $ cd $ROOTDIR/le-godaddy-dns
    $ python3 -m pip install -r requirements.txt --user
    
  4. 設定 dehydrated 的 domain.txt

    # configure dehydrated
    $ cd $ROOTDIR/dehydrated
    $ vim domains.txt
    在裡面填入需要設定的 domain, 可參考 https://github.com/lukas2511/dehydrated/blob/master/docs/domains_txt.md
    筆者的需求使用是 dd3.today *.dd3.today
    
  5. 設定 dehydrated 的 config

    $ vim $ROOTDIR/dehydrated/config
    
    找到這行並改成 yes, 沒有的話自行手動加入
    HOOK_CHAIN="yes"
    
  6. 設定 key、secret 並執行

    KEY 與 SECRET 可到這裡查詢

    # configure your API keys
    export GD_KEY=填入 API KEY
    export GD_SECRET=填入 API SECRET
    
    # ./dehydrated --challenge dns-01 -k $ROOTDIR/le-godaddy-dns/godaddy.py -c
    

    最後成功的樣子 2019-03-02 16 45 02

  7. 設定自動更新憑證

    /etc/cron.weekly/ 下新增一個檔案, 檔案權限記得要開成 755

    $ cd /etc/cron.weekly/
    $ touch update-dd3-dehydrated
    $ chmod 755 update-dd3-dehydrated
    $ vim update-dd3-dehydrated
    

    檔案內容如下 (/root/letsencrypt/dehydrated/dehydratedroot/letsencrypt/le-godaddy-dns/godaddy.py 要改成你自己安裝的路徑)

    #!/bin/bash
    export PATH=/usr/sbin:/usr/bin:/bin:"${PATH}"
    
    sleep $(expr $(printf "\%d" "0x$(hostname | md5sum | cut -c 1-8)") \% 86400); ( /root/letsencrypt/dehydrated/dehydrated --challenge dns-01 -k /root/letsencrypt/le-godaddy-dns/godaddy.py -c; service nginx reload ) > /tmp/dehydrated-dd3.today.log 2>&1
    

    godaddy 的 key 放在 /etc/environment

    $ vim etc/environment
    
    export GD_KEY=填入 API KEY
    export GD_SECRET=填入 API SECRET
    


Ref:

Comments

comments powered by Disqus