1. 程式人生 > >Let'sencrypt.sh 丟擲異常: Response: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:726)>

Let'sencrypt.sh 丟擲異常: Response: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:726)>

起因

今天網站的SSL證書過期了,打算重新申請,執行 Let'sencrypt.sh 的時候丟擲了這麼個異常.

一番搜尋,發現居然找不到直接的答案.沒有直接的答案就只能通過間接的答案來解決了.
希望我的解決過程能成為直接答案,幫助同樣遇到這問題的人.

經過

經過搜尋後發現這是Python下的一個異常.

引用這個文章的一句話:
Python 升級到 2.7.9 之後引入了一個新特性,當使用urllib.urlopen開啟一個 https 連結時,會驗證一次 SSL 證書。而當目標網站使用的是自簽名的證書時就會丟擲此異常。

解決方案很明瞭.我們看報錯資訊,有提到一個python檔案,修改它:

vim /tmp/acme_tiny.py

給它加上這麼兩行:

import ssl
ssl._create_default_https_context = ssl._create_unverified_context

加在這;

修改後儲存,別急著執行,還沒完.
這個檔案是 Let'sencrypt.sh 自動下載的,如果我們就這麼執行Let'sencrypt.sh,會下載一個新的,替換掉.這樣我們的修改就沒了.

於是我們還要開啟Let'sencrypt.sh,進行修改,去掉對這個檔案的下載更新:
在第52行前面加個"#":

結果

全部修改好後,執行測試:

成功!