Python pipでのSSLErrorの対処の1つ

以前にpip install --trusted-host http://pypi.org <package>で半ば無理やり解決した問題のより良い対処法を記録しておく。

上コマンドによる解決策はあまりお上品ではないので直した。原因はpythonとは無関係な問題だった。

原因・解決策など

原因は、There was a problem confirming the ssl certificateなどから、OSのSSL関連の設定ミスだと分かった。

これはsudo yum updateで解決できる。まさかこんなところだったとはという心境。

ローカルマシンのVirtualBox上だったため全く気を配っていなかった。これはよろしくないので、定期的にアップデートはしないといけない。

また、今になって調べてみると、時刻設定の問題だったかもしれない。VirtualBox上の仮想マシンはすぐに時刻がずれるため。しかしsudo yum updateで直ったのでいいだろう。次にこの問題に出くわした時は、時刻設定も見ておきたい。

エラー内容

解決はしたものの、一応どういうエラーだったのか抜粋を載せておく。1行だと長かったので、適当なところで改行している。

...
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, 
status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, 
'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate verify failed: 
certificate is not yet valid (_ssl.c:1076)'))': /simple/pip/
...
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: 
HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ 
(Caused by SSLError(SSLCertVerificationError(1, 
'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate is not yet valid (_ssl.c:1076)'))) - skipping 

注意してみれば、There was a problem confirming the ssl certificatecertificate is not yet valid (_ssl.c:1076)の部分ですぐに気づくことができたはず。反省しないといけない。

おわり

--trusted-host <url>は信頼できるホストのみ指定すべきなので、むやみな使用は控えたいと思う。でないと、危ないファイル群がインストールされてしまう可能性がある。

SSLというかTLSの認証手順なんかはすぐに思い出せるようにしたい。

同類の問題に当たったときは、

  • yum update
  • OSの時刻設定

あたりを注意しておきたい。

以上です。

タイトルとURLをコピーしました