2023年1月5日 星期四

【IT Notes】用certbot向Let's Encrypt自動產生憑證,並自動更新

 前面學到很多關於產生和匯入憑證的做法,通常都是很常見也必須要會做的技術,後來同事分享了一些可以不用花錢向憑證單位、自己就可以產生憑證的做法,我覺得還滿實用且有趣的,但是過程其實沒有很容易懂,所以一定要記錄一下流程,知道後以後可以省下很多更新憑證的麻煩。


此套件名稱為certbot,大概就是certificate robot的意思吧!也是一個open source的軟體,方便用戶向letsencrypt申請免費且三個月的憑證。會做這個東西出來大概就是避免被憑證中心收費吧!因為企業如果想要取得至少一年的憑證的話,通常都要跟憑證中心(例如TWCA)花錢買的,如果想不想花那個錢、只是自己做憑證測試等需求者,就能透過這種工具,每三個月就去產出憑證,算是一種省錢又實際的做法。

ㄧ.下載並安裝cerbot和certbot-dns-nsone

$ sudo apt install snapd -y  \\先安裝snapd,這是一個Linux用的第三方安裝套件
$ sudo snap install certbot --classic \\snap安裝certbot
$ snap set certbot trust-plugin-with-root=ok   \\啟用套件信任設定
$ ln -s /snap/bin/certbot /usr/bin/certbot \\把snap下載好的certbot,用軟連結方式建立Linux本機的certbot功能,這樣才能使用該指令
$ snap install certbot-dns-nsone   \\安裝certbot-dns-nsone,因為要跟NS1認證DNS

.跟letsencrypt申請憑證,並跟DNS作驗證

如果是第一次做就要在過程中做txt record驗證。

$ certbot certonly --email it@abc.com --server https://acme-v02.api.letsencrypt.org/directory --manual --preferred-challenges dns -d *.abc.com

\\欲申請的憑證可以是單一網址,也可以是 wildcard 
\\過程要先跟NS1 DNS Server做txt record的認證
\\user 要用 root 權限 
\\第一次申請會要求打入email
\\-d 參數的意義:-d +「欲申請的憑證網域名稱」
先都選y,表示同意

它會隨機給一組驗證碼,並要求申請者用此碼去NS1上新增一個txt record,以作雙邊的認證

在NS1上,DNS > Zones ,新增一個txt的紀錄

新增txt record,把剛剛的驗證碼貼進去,再回到伺服器上按下繼續

按繼續後並得到txt recore驗證成功後,就會進一步核發憑證與私鑰,可以看到兩個檔案與其路徑出現。

三.自動更新憑證

要能夠讓自己電腦自動更新憑證,就需要靠NS1提供的api key,把這個金鑰放在自己電腦指定的路徑內,它就能夠透過API進行自動更新。

1.api key的產生方式

Settings > Account Setting

 Users & Teams > API KEYS > Add Key

勾選目前的TEAM,在MANAGEIP ALLOWLIST FOR THIS KEY中打下能連入的IP、網段,然後按「Save API Key」

***API Key的設定很重要,所指定Zone內的所有domain都能吃到這支KEY,而IP限制也要設定正確,不然來自遠端主機的認證也會被阻擋。
設定好後,一開始API Key是可以顯示的,點一下中間的ⓘ,就可以看到api key了,然後過一段時間,這個ⓘ就會消失。

2.配置好api key

# mkdir /mnt/.secret/certbot 
# vim /mnt/.secret/certbot/nsone.ini  

dns_nsone_api_key = <API key>   \\在裡面放剛剛拿到的api key

$ chmod -R 600 /mnt/.secret/certbot

四.使用 certbot 更新憑證

$ certbot renew --dns-nsone --dns-nsone-credentials /mnt/.secret/certbot/nsone.ini 

\\用指令就可以向NS1打API、並要求更新憑證了

出現success就表示憑證成功了

如果我馬上又更新一次的話,它當然也不是想刷新就給我刷新,要至少等個一兩月後再試試
,總不可能隨便讓人家無限更新吧!

學到了這們技巧,就可以知道為什麼現在會有那麼多詐騙網站都用https,這算是開源技術被濫用的實例。




沒有留言:

張貼留言

【IT Notes】透過api移轉Gmail到Exchange

 在雲端裡面串接api不是一件很好學的技術,第一次有機會學習到將GWS的Gmail信件全部轉移到M365的Exchange,其實方法很多種,像以前用的pst檔匯出轉移的方式等,但透過api串接,可以批次和排程轉移,是非常方便且準確的作法。唯一讓人感到困難的是學習成本不小,通常需要...