UbuntuでPythonを使用していると、SSLエラーに遭遇することがあります。この記事では、そのような状況で試すことができるいくつかの解決策を提供します。
Pythonでの対処法
まず、Pythonでの対処法について説明します。Pythonでは、SSL_CERT_FILE
という環境変数にCA証明書ファイルを指定すると、エラーが解決することがあります。PythonにはCA証明書を持っているcertifi
モジュールがあります。そのモジュールが持っている証明書ファイルのパスを環境変数にセットします。ファイルパスは、python3 -m certifi
で知ることができます。
$ python3 -m certifi
/usr/local/lib/python3.8/dist-packages/certifi/cacert.pem
$ echo SSL_CERT_FILE=/usr/local/lib/python3.8/dist-packages/certifi/cacert.pem >> $HOME/.bashrc
$ source $HOME/.bashrc # 環境変数読み込み
wgetでの解決方法
次に、wgetでの解決方法について説明します。wgetがどこのCA証明書ファイルを読みに行っているかを知ると早いです。strace
コマンドでwgetがどんなファイルを読んでいるのか調べます。そして、/usr/local/ssl/certs
のファイルを読みに行っていることがわかります。そのディレクトリの中身を見ると空でした。CA証明書は自分の環境では/etc/ssl/certs
にあるため、シンボリックリンクを貼って対処します。
$ sudo rm -rf /usr/local/ssl/certs
$ sudo ln -s /etc/ssl/certs /usr/local/ssl/certs
再度wgetを試すと、エラーは解消できました。同時にPythonでのエラーもなくなり、環境変数の設定が不要になりました。
以上がUbuntuでPythonのSSLエラーを解決する方法です。この記事が皆さんの役に立てば幸いです。.