先來簡單介紹 Let's Encrypt (LE) 實際使用情況,你會在你機器上面裝一個小程式 (agent) 幫你去 LE 做申請 / 更新憑證的動作。所以這篇文章主要是講解這個小程式做了什麼事情,不然的話其實下指令就可以搞定所有事情,你不會知道中間發生什麼事。
Step 1. 產生 authorized key
這個只有 agent 第一次使用的時候會需要進行。authorized key 可以當作代表 agent 去操作 LE 的 API Key。所以我們可以說這是 API Key 產生流程。
- Agent 產生一組新的 key pair
- 通知 LE 要註冊 example.com 這個 domain
- LE 傳回來說可以用 DNS 驗證或是檔案驗證,2 選 1。然後以下是驗證資料
- 在 8303 的位址放 ed98
- 請將這個亂數 9cf0b331 加密
- 這個範例,agent 選擇使用檔案驗證。
- 他在 https://example.com/8303 內容放 ed98
- 將 9cf0b331 用私鑰加密,然後將加密結果以及公鑰一起傳給 LE
- LE 驗證網址和亂數都正確,這把公鑰就變成 authorized key 可以拿來操作 example.com 的憑證
Step 2. 申請 / 更新 / 註銷憑證
- 當 agent 拿到 authorized key 以後,就可以發送 PKCS#10 Certificate Signing Request (CSR) 給 LE 取得憑證。
- 產生一組新的 key pair
- CSR 裡面包含了
- 私鑰的 signature
- 公鑰
- 把整個 CSR 用 authorized key 加密傳給 LE
- LE 驗證 authorized key 以及欲申請的 domain。如果驗證通過,解開取得 CSR 之後核發憑證傳回 agent
這樣就完成取得憑證的程序。
更新以及註銷憑證的流程都類似,就不再多做說明了。