経緯
- 次のプロジェクトでpoetryというパッケージ管理のツールを使うことになった
- サイトの説明によると次のコマンドを実行するとインストールされるらしい
curl -sSL https://install.python-poetry.org | python3 -
- だが、次のエラーによって阻まれた
...
Traceback (most recent call last):
...
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)>
状況
- SSLの仕組みと状況からざっくり次のように解釈
- SSLは暗号された通信を行うための仕組み
- たしか公開鍵だの秘密鍵だののやり取りをする
- 多分、ローカルに鍵がなくてサーバー側に公開鍵を渡せないんだろうな
対処
私の環境は、python 3.9。
コマンドもそれに従って変わってくる。
% cd /Applications/Python\ 3.9
% sudo "./Install Certificates.command"
Password:
-- pip install --upgrade certifi
...
install --upgrade pip' command.
-- removing any existing file or link
-- creating symlink to certifi certificate bundle
-- setting permissions
-- update complete
その後 curl -sSL https://install.python-poetry.org | python3 -
も無事成功。
まとめ
curlがpythonで動いているところと絡んで、sslのファイルがどこに必要なのかで結構迷った。
そしてpythonのディレクトリに証明書を発行するためのコマンドが予め用意されているもの知らなかった。
今回の問題に対処するのに、始めはMacにデフォルトで入っていたpython 2.7からどうする?って感じだったのでかなり右往左往したが、結論的には対処で書いたコマンド実行だけで済むという長い道のりを経てたどり着いた答えがしょぼいものという定番のものだった。
参考