2017-06-07 4 views
0

私はhttps://www.ncdc.noaa.gov/cdo-we/api/v2/にアクセスしようとしています。これは、それを要求した直後に受信するトークンがhereであることを必要とする。その後:Python requests.get()はWeb APIにアクセスするSSLエラーを発生させます

import requests 


def get_noaa_data(url, data_type, header): 

    r = requests.get(url, data_type, headers=header) 
    print(r) 


if __name__ == '__main__': 

    token = 'longalphabetictoken' 
    creds = dict(token=token) 
    dtype = 'dataset' 
    url = 'https://www.ncdc.noaa.gov/cdo-web/api/v2/' 

    get_noaa_data(url, dtype, creds) 

は私がverify=Falseを設定することができます理解し、私は確認したいんrequests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:720)

を与えます。私もこのコードを配布できるようにしたいので、私はcacert.pemを変更することで回避したくありません。私もcertifiをスクリプトにインポートしてこれを試しました。人々が私のパッケージをダウンロードした場合に動作するNOAAサイトのSSL証明書を確認するための、OSに依存しない方法はありますか?

verify=Falseを使わずにこのような一般的なAPIにアクセスするには安全な方法があるようです。これは私の組織のマシンの問題ですか?

ssl.get_default_verify_paths() = DefaultVerifyPaths(cafile='/data01/anaconda2/envs/imagenv/ssl/cert.pem', capath=None, openssl_cafile_env='SSL_CERT_FILE', openssl_cafile='/data01/anaconda2/envs/imagenv/ssl/cert.pem', openssl_capath_env='SSL_CERT_DIR', openssl_capath='/data01/anaconda2/envs/imagenv/ssl/certs') 

FYI:amazon、googleなどのhttpsサイトは正常に動作します。

答えて

0

組織のSSL証明書が認証局(CA)によって署名されていることを確認する必要があります。そうしないと、SSL接続が機能しません。

関連する問題