2012-02-24 12 views
2

私たちのクライアントは、顧客のコンピュータにインストールされるクライアントスクリプトを可能な限り簡単にインストールしたいと考えています。これは、特別なインストールパッケージ(この場合はPyCurl)を意味しません。PyCurlを使用しないでクライアント証明書をCurlのように送信する:どのように?

SSLを使用し、クライアント証明書が必要なウェブサイトに接続できる必要があります。現在、これはos.system()でCurlを呼び出していますが、これを行うHTTPの戻りコードを取得するには、Curlに '-v'オプションを使用してこの出力を梳かなければならないように見えます。難しいことではなく、ちょっと腹立たしい。

Python 2.6に付属の標準ライブラリを使用してこれを行うには、他にもいくつかの方法がありますか? 私はこれで見つけることができるすべてを読んで、私はそれをやっている非カールの方法を見ることができませんでした。

この件に関するガイダンスは、事前にお寄せいただきありがとうございます。

答えて

3

これはトリックを行います。 Verisignはクライアント証明書を必要とせず、ランダムに取得されたHTTPSサイトに過ぎないことに注意してください。

import httplib 

conn = httplib.HTTPSConnection('verisign.com', key_file='./my-key.pem', cert_file='./my-cert.pem') 

conn.connect() 
conn.request('GET', '/') 

conn.set_debuglevel(20) 

response = conn.getresponse() 
print('HTTP status', response.status) 

EDITは:ただ後世のために、下記のブルーノさんのコメントは有効なものであり、ここでそれが必要だ場合にSTDLIBのソケットSSLおよびソケットモジュールを使用して、それをロールバックする方法の記事です。

EDIT2:私はリンクを投稿することができないようだ - ちょうどのためのウェブ検索httplib`は、いずれかを実行しません `ので、おそらく、別のライブラリを使用する必要があります

+0

「のPythonでの検証SSLサーバ証明書は、別の日から2.x」んサーバ証明書の検証を行い、HTTPS接続をMITM攻撃に対して脆弱にします。 – Bruno

+0

ありがとうDariusz! Bruno:現在のコードはcurl -k **を使用しているため、同様に脆弱です。 –

関連する問題