[解決済み] PythonでSSL証明書を検証する
質問
HTTPS で企業イントラネットの多くのサイトに接続し、SSL 証明書が有効であること、有効期限が切れていないこと、正しいアドレスに対して発行されていること、などを検証するスクリプトを書く必要があります。 これらのサイトでは、社内の認証局を使用しているので、証明書を検証するための認証局の公開鍵は持っています。
Pythonはデフォルトで、HTTPSを使用するときにSSL証明書を受け入れ、使用するので、たとえ証明書が無効であっても、urllib2やTwistedなどのPythonライブラリは喜んで証明書を使用します。
HTTPS でサイトに接続し、この方法で証明書を検証できるような良いライブラリはどこかにありませんか?
Pythonで証明書を検証するにはどうすればよいですか?
どのように解決するのですか?
バージョン 2.7.9/3.4.3 以降のリリースでは、Python の がデフォルトで は証明書の検証を行おうとします。
これは PEP 467 で提案されており、一読の価値があります。 https://www.python.org/dev/peps/pep-0476/
この変更は、関連するすべての stdlib モジュール (urllib/urllib2, http, httplib) に影響します。
関連するドキュメントです。
https://docs.python.org/2/library/httplib.html#httplib.HTTPSConnection
<ブロッククオートこのクラスは、デフォルトで必要なすべての証明書とホスト名のチェックを実行するようになりました。以前の未検証の動作に戻すには、ssl._create_unverified_context() を context パラメータに渡すことができます。
https://docs.python.org/3/library/http.client.html#http.client.HTTPSConnection
<ブロッククオートバージョン 3.4.3 で変更されました。このクラスは、デフォルトで必要なすべての証明書とホスト名のチェックを実行するようになりました。以前の未検証の動作に戻すには、ssl._create_unverified_context()をcontextパラメータに渡すことができます。
新しい組み込みの検証は システムが提供する 証明書データベースに基づいています。それに反して が要求する パッケージはそれ自身の証明書バンドルを出荷します。両方のアプローチの長所と短所は 信頼性データベース のセクションで説明されています。 .
関連
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] pipでPythonの全パッケージをアップグレードする方法
-
[解決済み] OpenSSLを使用して自己署名入りSSL証明書を生成する方法を教えてください。
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] 値で列挙名を取得する [重複]。
-
[解決済み] PyMongoで.sortを使用する
-
[解決済み] Cythonのコードを含むPythonパッケージはどのように構成すればよいのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 前月の日時オブジェクトを返す
-
[解決済み] Pythonのキャッシュライブラリはありますか?
-
[解決済み] Django のテストデータベースをメモリ上だけで動作させるには?
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] 値で列挙名を取得する [重複]。
-
[解決済み] 古いバージョンのPythonにおける辞書のキーの並び順
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] Pythonでマルチプロセッシングキューを使うには?
-
[解決済み] Python Logging でログメッセージが2回表示される件
-
[解決済み] virtualenvsはどこに作成するのですか?