# let's encrypt 證書簽署失敗 bad handshake

當平時自動運作的 Let's encrypt 都正常運作時,最近要簽署新證書卻發現下 certbot renew 無法正常簽署並出現錯誤 unexpected error: bad handshake 要怎麼處理這問題呢

其實這問題在先前官方有公告要調整 root 證書公告,原先使用的 DST Root CA X3 將於 2021 年 9 月 30 日到期,而新的 ISRG Root X1 在舊裝置上並不存在,所以導致切換成 ISRG Root X1 而舊裝置找不到該憑證就導致 TLS handshake 失敗

最簡單就是更新套件,而有些主機可能因為歷史包袱不好做套件更新等等處理,所以就手動新增 ISRG Root X1 證書來驗證

首先先測試看看能不能訪問新的驗證端 API

curl -v https://acme-v02.api.letsencrypt.org/directory

回傳的結果應該會有個 SSL certificate problem: unable to get local issuer certificate

接著到官網這邊取得 ISRG Root X1 證書

ISRG Root X1 證書

將裡面的文字複製起來,並且到主機中的 /usr/local/share/ca-certificates 建立一個檔案 isrgrootx1.pem

接著將內容貼上該檔案中,然後執行 sudo update-ca-certificates 正常會顯示 1 add ,此時在進行 certbot renew 就可以正常執行了