« ^ »

macOS上のPythonでCERTIFICATE_VERIFY_FAILEDが発生したらインストールされている証明書の更新をしよう

所要時間: 約 1分

macOS上でPythonでSSLを用いたアクセスを行おうとすると以下のようなエラーが出力されることがある。

URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)>

通信経路や通信相手に問題がない場合、Pythonが管理している証明書が古いためTLSの通信に失敗している可能性がある。以下のコマンドを実行して最新の証明書を取得すると解決できる。

$ /Applications/Python\ 3.9/Install\ Certificates.command
/Applications/Python\ 3.9/Install\ Certificates.command
 -- pip install --upgrade certifi
Collecting certifi
  Using cached certifi-2020.12.5-py2.py3-none-any.whl (147 kB)
Installing collected packages: certifi
Successfully installed certifi-2020.12.5
WARNING: You are using pip version 20.2.3; however, version 20.3.3 is available.
You should consider upgrading via the '/Library/Frameworks/Python.framework/Versions/3.9/bin/python3.9 -m pip install --upgrade pip' command.
 -- removing any existing file or link
 -- creating symlink to certifi certificate bundle
 -- setting permissions
 -- update complete
証明書の取得

実はインストーラにも同様の記述が表示されている。しかしインストーラが表示する文面に気付かないことも多いため、この状況にしばしば陥っているのを見かける。