初探 snaps 以及透過 snaps 來安裝 certbot
TL;DR 透過用 Snapd 來安裝 Certbot ,在用 Certbot 獲取憑證。
起因
最近剛好在處理有關憑證更新的問題,之前做法是透過 wget https://dl.eff.org/certbot-auto
來下載 certbot-auto,但突然發現目標網站 404,於是直接去主頁 https://dl.eff.org ,然後再被瀏覽器 redirect 到 certbot.eff.org 這網站,於是開始研究起新的安裝方法。
唯一較大的差異便是透過 Snaps 這專案來安裝 certbot-auto 。
Snaps
從開發者角度來看 snaps 其最主要的目的是讓 application ( 或稱 snaps ) 透過 snapd 來 CRUD 在多種 Linux distributions 上。snapd 就是背景程式會去管理 snaps
Snaps are app packages for desktop, cloud and IoT that are easy to install, secure, cross‐platform and dependency‐free. Snaps are discoverable and installable from the Snap Store, the app store for Linux with an audience of millions.
比如我要在 Centos8, Ubuntu、Arch Linux…etc 安裝 certbot,只需統一執行這行即可
sudo snap install certbot-nginx
Snap Store
像是 Dockerhub、Github….etc。Snaps 也可以被 Snapcraft ( build and publish snaps) 發佈到一個平台 ( 稱 Snap Store ) ,提供給開發者使用。
概念
概念上,從 iOS 開發者角度 snaps 很像 pod library,Snapd 很像 cocoapods,而 php 開法者角度來看 snaps 很則像 packages,Snapd 像composer。
環境
以下會在 Ubuntu 20.04 LTS 環境搭配 Nginx 實作,如需使用不同 Linux distributions 版本可到這邊去選擇 ( 這邊假設 DNS、Nginx 相關的 config 都正確設定無誤 )
如果不知道版本的話可以 run 以下三種其中一種
cat /etc/os-releaselsb_release -ahostnamectl
To Root Directory
cd ~
安裝 Snapd 或者更新至最新版的 napd
Snapd 會根據不同的 Linux Distributions 分成默認,非默認。此次的 case 剛好Ubuntu 20.04 LTS 默認就有(點這看不同版本的狀況)
sudo snap install core
sudo snap refresh core
移除舊的 Certbot [ optional ]
如果是新的 server 就不用
sudo apt-get remove certbot
透過 Snapd 安裝 Certbot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
執行
以前的作法需要透過 -d 提供哪個域名需要被 ssl,現在是直接列出來給你選擇,比方說下面總共有 5 個域名,我只希望前面 4 個需要,那就輸入1,2,3,4
sudo certbot --nginx
測試自動更新
sudo certbot renew --dry-run
到瀏覽器上檢查一下
這樣就完成了