2016-05-30 19 views
0

https urlでデータを取得しようとしましたが、ブラウザで実行しようとするとセキュリティ証明書が必要になります。from urllib3 HTTPSConnectionPool request_encode_body証明書の問題

しかし、私の問題は、応答データを取得するために私のpythonコードのURLを呼び出す方法ですか? 私はfollwingコード書きました:

conn = HTTPSConnectionPool(BETTING_CONFG['api_url'], 
           maxsize = BETTING_CONFG['connection_max_size']) 

response = conn.request_encode_body('POST', service_uri, headers= headers, 
             encode_multipart=False, body = body) 

を、私は次の応答を取得:

Response: status = 200, payload = {"_status":"error","payload":{"_code":"0-2","_message":"invalid_app_key"}} . 

と端末上でこの警告:

/usr/local/lib/python2.7/dist-packages/urllib3/util/ssl_.py:318: SNIMissingWarning: An HTTPS request has been made, but the SNI (Subject Name Indication) extension to TLS is not available on this platform. This may cause the server to present an incorrect TLS certificate, which can cause validation failures. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#snimissingwarning. 
    SNIMissingWarning 
/usr/local/lib/python2.7/dist-packages/urllib3/util/ssl_.py:122: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning. 
    InsecurePlatformWarning 
/usr/local/lib/python2.7/dist-packages/urllib3/connectionpool.py:821: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.org/en/latest/security.html 
    InsecureRequestWarning) 
[555WIN] 2016-05-30 14:02:06,043 - INFO - Betting Response: status = 200, payload = {"_status":"error","payload":{"_code":"0-2","_message":"invalid_app_key"}} . 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/logging/handlers.py", line 76, in emit 
    if self.shouldRollover(record): 
    File "/usr/lib/python2.7/logging/handlers.py", line 156, in shouldRollover 
    msg = "%s\n" % self.format(record) 
    File "/usr/lib/python2.7/logging/__init__.py", line 724, in format 
    return fmt.format(record) 
    File "/usr/lib/python2.7/logging/__init__.py", line 464, in format 
    record.message = record.getMessage() 
    File "/usr/lib/python2.7/logging/__init__.py", line 324, in getMessage 
    msg = str(self.msg) 
TypeError: __str__ returned non-string (type dict) 
Logged from file jsonapi.py, line 137 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/logging/__init__.py", line 851, in emit 
    msg = self.format(record) 
    File "/usr/lib/python2.7/logging/__init__.py", line 724, in format 
    return fmt.format(record) 
    File "/usr/lib/python2.7/logging/__init__.py", line 464, in format 
    record.message = record.getMessage() 
    File "/usr/lib/python2.7/logging/__init__.py", line 324, in getMessage 
    msg = str(self.msg) 
TypeError: __str__ returned non-string (type dict) 

を私はクロムに証明書を追加し、郵便配達員、それはうまくいく?

どのように修正するには?

答えて

1

あなたのChrome証明書ストアは、Pythonアプリケーションで使用されている証明書ストアと同じではありません。

自己署名証明書を作成するのではなく、有効なSSL証明書しか取得できない場合は、はるかに簡単です。

また、Pythonとurllibをアップグレードしてください。これらの警告メッセージは無視してはいけません!まずそれらを解決してください!

SSL証明書は以前は高価でしたが、の有効な完全サポート証明書はからLetsEncryptになりました。 own websiteを証明書を使って実行しています。私はPythonに証明書を読み込む際に問題がないことを保証します。

関連する問題