2011-11-30 16 views
21

セキュリティで保護されたサイト(HTTPS)にアクセスするためのpycurlスクリプトを作成しようとしています。私は以下のエラーを取得していますpycurlとSSL証明書

c = pycurl.Curl() 
c.setopt(pycurl.USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20100101 Firefox/8.0') 
c.setopt(pycurl.URL, 'https://for-example-securedsite') 
c.setopt(pycurl.COOKIEFILE, 'cookie.txt') 
c.setopt(pycurl.COOKIEJAR, 'cookies.txt') 
c.setopt(pycurl.WRITEDATA, file("page.html","wb")) 

..

pycurl.error:(60、「SSL証明書問題、CA証明書がOKであることを確認詳細:。\ nエラー:14090086:SSLルーチン:SSL3_GET_SERVER_CERTIFICATE :証明書の検証に失敗しました ')

SSL証明書の取得に失敗したため、コードは失敗しました。

私のコードに以下の行を追加すると、エラーがなくなりました。

c.setopt(pycurl.SSL_VERIFYPEER, 0) 
c.setopt(pycurl.SSL_VERIFYHOST, 0) 

上記のコードは、証明書の検証をスキップします。しかし、それは「中間者」の攻撃を受ける。

ローカル証明書ストアにSSL証明書があります。誰も私の証明書をエクスポートし、私のコードを使用する方法を知っています..いくつかのサンプルコードはすばらしいでしょう..

ありがとう!

答えて

18

あなたはそれをやっている途中で、特にmost recent SSL vulnerabilitiesのように、中間者の攻撃を受けることになります。

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/updated-certificate-chain.crt") 
curl.perform() 

デフォルトでは、カールには古くなった証明書リストが付属しています。更新するか、テスト用に独自の証明書を使用するかは、更新された証明書chain.crtファイルをアクセス可能な場所に置き、pycurl.CAINFOオプションを使用して参照してください。

また、pycurl.SSL_VERIFYHOSTが2に設定されていることを確認してください。

1

cURLのドキュメントabout SSL certificatesを読んだことがありますか?これは、直接あなたの質問に対処するために思える...特に、項目2:

2. Get a CA certificate that can verify the remote server and use the proper 
    option to point out this CA cert for verification when connecting. For 
    libcurl hackers: curl_easy_setopt(curl, CURLOPT_CAPATH, capath); 

pycurlモジュールはCAPATHオプションが含まれているので、これはあなたのコードで実装が簡単でなければなりませんように見えます。

+0

返事ありがとうございました..私は記事を読んで..次に、以下のオプションでcurl.exeを使用して証明書を取得しようとしました.. curl.exe --cacert test.crt https:// secure-site/..私は次のエラーを持っています.. "curl:(1)プロトコルhttpsはlibcurlでサポートされていないか無効になっていません" ..どのようにアイデアを修正すればよいですか? – K2M

+0

私はカールソースをダウンロードして自分でビルドしました。すぐにビルドされたCurl.exeをダウンロードできるURLがあります。 "http://curl.haxx.se/latest.cgi?curl=win32-ssl-devel- msvc "..私はそれを探るだろう! – K2M