1. Qiita
  2. 投稿
  3. Python

Python の標準ライブラリが https でサーバー検証するようになったバージョンのまとめ

  • 15
    いいね
  • 0
    コメント

昔の Python の標準ライブラリは、 https でサーバーの証明書の検証をしていませんでした。
そのため、ちゃんと https を使いたい場合は、標準ライブラリより使いたい requests を使うことがずっと推奨されていました。 1

数年前から https の重要度が叫ばれるようになり、標準ライブラリがデフォルトで検証しないのはマズイよねということで、 Python 3.5 からはシステムのデフォルトCA証明書を使って検証するようになりました。 (PEP 476)

この新機能はセキュリティに大きく関わるので、 3.5 より前のバージョンにもバックポートされました。具体的には 2.7.9 と 3.4.3 です。

これ以降のバージョンの Python を使っていれば、標準ライブラリの urllib を使っていてもサーバーの証明書を検証しているはずです。コネクションプール等の urllib3 / requests が提供するメリットよりも、依存を減らす方を優先したい場合は、 Python のバージョンがこれ以降であることを確認してください。


  1. requests は Mozilla の CA List から作られた cacerts.pem をバンドルして配布しています。 (See also: certifi) CAが追加されたとか、どっかの CA がやらかしたとかあって CA List が更新されたら、 requests のバンドルしているものに反映されているのを確認してアップデートしましょう。