QUIC实战(三) letsencrypt证书申请和自动续期
部署完QUIC集群之后,原來申請的https證書到期了,就嘗試了下重新安裝/更新證書。
Let’s Encrypt 是一個自動簽發 https 證書的免費項目
 Certbot 是 Let’s Encrypt 官方推薦的證書生成客戶端工具
因為我的quic集群是直接把原來的證書復制到自定義的目錄下,所以沒有安裝過certbot,先安裝下certbot。
安裝Certbot
先安裝snapd,根據自己的linux系統(我的是Red Hat Enterprise Linux 8),選擇對應的snapd安裝教程
安裝snapd
$ sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm $ sudo dnf upgrade $ sudo yum install snapd創建軟鏈接
$ sudo systemctl enable --now snapd.socket $ sudo ln -s /var/lib/snapd/snap /snap安裝Certbot
## 更新snap到最新的版本 sudo snap install core sudo snap refresh core ## 去除其余Certbot操作系統包 確保安裝后使用certbot命令使用的是snap sudo apt-get remove certbot sudo dnf remove certbot sudo yum remove certbotsudo snap install --classic certbot #創建軟鏈接 sudo ln -s /snap/bin/certbot /usr/bin/certbotrenew 證書
因為在機器上我已經存放了舊的證書,所以我一開始的想法是直接更新舊證書就可以了,先通過certbot certificates查看下當前服務器的證書信息
 但是結果沒有返回當前的證書信息給我。我猜測可能是由于我之前遷移證書的時候只遷移了配置nginx需要的pem文件,存放路徑也和舊集群安裝證書時的默認路徑不一樣。
我將原來的證書路徑/etc/letsencrypt 下的所有文件都打包后上傳到新集群的Nginx機器上同樣的路徑,再使用certbot certificates 查看證書就可以看到舊證書了
 
 接下來使用certbot renew 命令更新證書就行了
遇到的問題:
 
 在更新證書的時候,會出現如上報錯,說是訪問xxx/.well-known/acme-challenge/xxx
 來驗證域名所有權的時候出現連接不通的情形。
因為使用aws部署的nginx集群,把域名綁定到了負載均衡器上,一開始負載均衡器只偵聽了quic的443端口,添加了對80端口的偵聽之后不再提示無法連接而返回404錯誤碼。
判斷是由于上述路徑無法訪問到的問題,多次嘗試后始終匹配不到路徑;最后想到這個請求是為了驗證域名所有權,但是我是將域名綁定到了負載均衡器上,而不是更新證書的服務器上,將域名綁定到服務器ip上之后再次執行certbot renew ,就更新成功了
由于新證書的路徑跟之前的不一樣,nginx配置文件里的證書路徑需要修改成如下:
ssl_certificate /etc/letsencrypt/live/you.domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/you.domain.com/privkey.pem;更新完證書之后又把域名綁定到負載均衡器上
letsencrypt 證書請求頻率限制
https://letsencrypt.org/zh-cn/docs/rate-limits/
 每個賬戶每小時每域名有最多驗證失敗 5 次的限制。該限制次數在測試環境中更高(每小時允許 60 次驗證失敗)
 每個注冊域名每周最多 5 張重復證書的限制
所以在我反復使用certbot renew命令的時候可能會出現達到上限的提示,過一段時間之后再嘗試就可以了
最終我只是進行了證書遷移和更新,但是這樣的操作后續更新還是會有問題(需要把域名綁定到對應的服務器ip上),還是比較麻煩的。
 后續會繼續研究下,如果有好的解決方案會更新博客。如果大家有處理過類似的問題也可以分享下
參考資料:
 Installing snap on Red Hat Enterprise Linux (RHEL)
 None of the above on CentOS/RHEL 8
總結
以上是生活随笔為你收集整理的QUIC实战(三) letsencrypt证书申请和自动续期的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: linux常见问题及其解决方案集锦
 - 下一篇: JS组件系列——表格组件神器:boots