在 Linux (Ubuntu) 導入 Let’s Encrypt (for Apache)

文章更新時間:2019-03-13

環境:

OS: Ubuntu 18.04 LTS
Web server: Apache: 2.4

初始化:

  1. 如果還沒裝 git 的話:
    sudo apt-get install git
  2. cd /opt
  3. sudo git clone https://github.com/certbot/certbot
  4. cd certbot
  5. 自動化安裝依存套件以建立起執行環境:
    ./certbot-auto

單一主機名稱 (Single host) 步驟:

  1. 開始自動化設定 (for apache)
    ./certbot-auto --apache
  2. 選擇要簽發憑證的主機名稱
  3. 選擇未來的連線方式
    1. HTTP, HTTPS 並存
    2. 全部導向 HTTPS (會自動在該主機設定檔加上 rewrite rule)
  4. 測試是否正常簽發
    https://www.ssllabs.com/ssltest/analyze.html?d=[主機名稱]

Wildcard Certificate 步驟:

  1. 採用手動設定,挑戰模式採用 DNS TXT 紀錄:
    ./certbot-auto certonly --manual --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory --agree-tos --email yourname@example.com -d "*.yourdomain.com,yourdomain.com"
  2. 接下來會出現要加入 DNS TXT 的內容:
  3. 加入後用以下指令確認是否已經生效:
    [Linux] dig _acme-challenge.yourdomain.com txt
    [Windows] nslookup -q=txt _acme-challenge.yourdomain.com
  4. 生效後按下 Enter
  5. 由於本範例登錄了 *.yourdomain.com 及 yourdomain.com 兩個域名,所以 2~3 步驟會跑兩次(請注意那個挑戰用的值 xxxxxxxx 每次都不同,此外,不要刪除前一個 TXT Record 而是建立同名的第二個 TXT Record)
  6. 等第二個生效等了一段時間,因為要看主機的 TTL
  7. 以後還是得使用以上相同流程來更新憑證
  8. 由於此方式僅申請憑證但沒有自動設定到 Web Server,所以後續要自己手動設定

維護:

  • 列出所有憑證:
    ./certbot-auto certificates
  • 更新所有憑證:
    ./certbot-auto renew
  • 更新單一憑證:
    ./certbot-auto renew --cert-name [憑證名稱]
  • 刪除憑證:
    ./certbot-auto delete --cert-name [憑證名稱]

Reference:

Issues:

分類: Web technology。這篇內容的永久連結