2012-05-03 8 views
1

当社の法人が署名した証明書を使用してサーバーへのHTTPS呼び出しを行う必要があります。この認証局を信頼するようにPythonを設定するにはどうすればよいですか?Pythonの企業認証局を使用したHTTPS証明書の確認

+0

[HTTPS接続Python](http://stackoverflow.com/questions/2146383/https-connection-python) –

+1

の可能な複製[Validate SSL certificates with Python](http://stackoverflow.com/質問/ 1087227/validate-ssl-certificates-with-python) – systempuntoout

+1

これはhttps/sslを作成する方法ではなく、信頼できる機関を追加する方法です – Brig

答えて

0

デフォルトでは(httplib.HTTPSConnectionを使用していると仮定します)、何もする必要はありません。httplib doesn't do any certificate verificationsame applies to urllib)です。

もちろん、これはうまくいかないので、サーバー証明書を確認する必要があります。これにはさまざまな解決策があります(this question参照)。

簡潔には、確認コールバックを挿入できるように、ソケットをssl.wrap_socket経由でSSLソケットに手動で切り替える必要があります(ホスト名と証明書の両方を確認する必要があります) 。

また、httplibに制限されていない場合は、PycURLを使用すると確実にこのクリーナーになります。 CA_INFO(またはCA_PATH)は、内部CA証明書を指すように設定できます。さらに、通常はあらかじめ定義されたCAのリストはありませんが、here(Mozillaリストから変換されたもの)から1つ取得し、必要に応じて信頼するCAのリストにこれらの証明書を追加することができます。

0

あなたがこれを解決するためのサンプルコードを探しているなら、ここではPycURLである:

import pycurl 
curl = pycurl.Curl() 
curl.setopt(pycurl.URL, "https://your-secure-website.com/") 
curl.setopt(pycurl.SSL_VERIFYPEER, 1) 
curl.setopt(pycurl.SSL_VERIFYHOST, 2) 
curl.setopt(pycurl.CAINFO, "/path/to/your-corporate-certificate-chain.crt") 
curl.perform() 

アクセス可能な場所や使用中のあなたのコーポレート・証明書chain.crtファイルを配置することを確認しますそれを指すpycurl.CAINFOオプション。