注: この記事はとりあえず見つけた解決策を記したものです。これが安全であるという保証はできませんので何が起きても自己責任でお願いします。またこの記事が正確である保証もいたしません。
概要
Discord.pyのbotをWindows上で動かそうとしたらSSL関連のエラーを吐いた。
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1108)
環境
- Windows 10 Ver 1903 (Build 18362.900)
- Python 3.8.2
- Discord.py 1.3.3
原因・解決方法
https://github.com/Rapptz/discord.py/issues/4159 を見た。
5/30日にルート証明書が切れてたらしい。(参考: https://crt.sh/?id=1)
本来アプデで入るはずの証明書4つが、何かしらの要因で1つだけ入ってなかったんじゃないかと推測してる人もいる。
何にしろ、見た感じ皆欠けてる証明書は同じっぽい?
ということでこちらからDLする。→ https://crt.sh/?id=2835394
ちなみにcrt.shはSectigo(COMODO CAのブランド)が運営してるサイトなので信頼できる。
画像左下の"Download Certificate: PEM"から"2835394.crt"をDL。
ダブルクリックで実行し、証明書をインストールする。
出てきたウィザードに従ってインストールを進めていく。
ローカルコンピュータにインストールするかユーザーにインストールするかはお好みで良いと思うけどコンピュータにインストールしたほうがよさそう。
これで解決。
まあでもWindowsかSectigoのアプデミスってことなら今後適切にアップデートしていけば治るんじゃないかな?
追記
IEでdiscord.comに行って鍵マーククリックして云々という方法もあるのだが、件のIssueではこの方法は良くないとい書かれていたので解説しなかった。