Let’s Encrypt 是免費、自動化和開放的憑證頒發機構,自從開放以來受到許多網站的重度運用,但因為免費的效期僅有90天,因此需要每3個月進來更新一次,隨著成立時間的推移,官方在設定的方式也經過多版本的演進,本篇紀錄2021年版本中依據官方的說明設定可以使用自動更新的方式

  • 有介於完整的流程比較複雜,這邊僅針對憑證的更新作介紹,諸如像是DNS、網域申請的作業等…,可參考網路上其他相關的文章
  • DNS解析
  • CertbotUbuntu-Nginx 設置

 

STEP 1:安裝Snap.Cerbot套件

# sudo apt update $ sudo apt install snapd

 

STEP 2:確認Snap版本是最後的版本

# sudo snap 安裝核心;sudo snap 刷新核心

 

STEP 3:安裝Cerbot

# sudo snap install –classic certbot

 

STEP 4:建立指令執行連結

# sudo ln -s /snap/bin/certbot /usr/bin/certbot

 

STEP 5:檢查已安裝的plug-in與Snap Cerbot使用相同的容器

# sudo snap set certbot trust-plugin-with-root=ok

 

STEP 6:安裝DNS檢查外掛

# sudo snap install certbot-dns-cloudflare
其他支援DNS商安裝查詢:https://certbot.eff.org/docs/using.html#dns-plugins

 

STEP 7:安裝憑證

# sudo certbot –nginx (自動安裝 )
# sudo certbot certonly –nginx (手動安裝 )
官方版本針對的是單一獨立憑證的更新,但因為要申請的是萬用憑證,需要結合Cloudflare的API Token進行驗證,所以需要繼續往下執行 …

 

STEP 8:申請Cloudflare API
點選[我的設定]

點選[API-Token]-[Create Token]

產生API-Token

  1. 名稱請自行定義
  2. 務必選取「編輯」
  3. 選擇自己的網域

取用API-Token

 

STEP 9:建立Token取用設定檔

官方設定檔說明:Welcome to certbot-dns-cloudflare’s documentation!
# echo “Your Token Number” > /etc/letsencrypt/dns-cloudflare.conf

 

STEP 10:申請憑證

# sudo certbot certonly \
–dns-cloudflare \
-i nginx \
–dns-cloudflare-credentials /etc/letsencrypt/dns-cloudflare.conf \
-d aiso.idv.tw \
-d *.aiso.idv.tw \
–dns-cloudflare-propagation-seconds 30

預設提供5種方式進行驗證,依據步驟往下進行即可

 

STEP 11:檢查憑證可否自動更新

2021最新版本中,官方已將更新頻率設定寫入程式中,不需要再額外設定排程,但須要模擬進行可否正確地進行更新

# certbot renew –dry-run

 

STEP 12:增加Nginx SSL取用參數

# vi nginx/site-enable/[You’r sitename].conf

ssl_certificate /etc/letsencrypt/live/aiso.idv.tw/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/aiso.idv.tw/privkey.pem;

# 使用的加密協定
ssl_protocols TLSv1.2;
# 加密演算法,越前面的優先級越高
ssl_ciphers ‘ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS’;
# 交握過程使用 Server 的首選加演算法,這裡使用 Client 為首選
ssl_prefer_server_ciphers on;

#
# HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
#

# 增加 http header
add_header Referrer-Policy origin-when-cross-origin;
add_header Feature-Policy “microphone ‘none’; payment ‘none’; sync-xhr ‘self’ https://*.aiso.idv.tw”;

# 從`.htaccess`借來的HTTP響應頭
#add_header Referrer-Policy “no-referrer” always;
add_header X-Content-Type-Options “nosniff” 總是;
add_header X-Download-Options “noopen” 總是;
add_header X-Frame-Options “SAMEORIGIN” 總是;
add_header X-Permitted-Cross-Domain-Policies 總是“無”;
add_header X-Robots-Tag “none” 總是;
add_header X-XSS-Protection “1; mode=block” 總是;
add_header Strict-Transport-Security “15768000” 總是;

參考文章:
———

申請 Let’s Encrypt 憑證,並設定自動更新

官方網站:
———
Certbot
Welcome to certbot-dns-cloudflare’s documentation!
CloudFlare