企業権限によって署名された証明書を使用して、サーバーに対して HTTPS 呼び出しを行う必要があります。この認証局を信頼するように Python を設定するにはどうすればよいですか?
2 に答える
これを解決するためのサンプル コードを探している場合は、次の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()
your-corporate-certificate-chain.crt ファイルをアクセス可能な場所に配置し、pycurl.CAINFO オプションを使用してそれを指すようにしてください。
デフォルトでは ( を使用していると仮定してhttplib.HTTPSConnection
)、何もする必要はhttplib
ありません。証明書の検証は行われません(同じことが にも当てはまりますurllib
)。
もちろん、これは良いことではありません。サーバー証明書を確認する必要があります。これにはさまざまな解決策があります (この質問を参照してください)。
つまり、検証コールバックを挿入できるように、手動でhttplib.HTTPConnection
ソケットを SSL ソケットに変換する必要がある場合があります (ホスト名と証明書の両方を検証する必要があります)。ssl.wrap_socket
または、 に制約されていない場合は、 PycURLhttplib
を使用すると確実にこれがきれいになります。内部 CA 証明書を指すように構成(または) できます。さらに、通常は事前に定義された CA のリストは付属していませんが、ここから(Mozilla リストから変換された) 1 つを取得し、必要に応じて信頼する CA のリストにこれらの証明書を追加できます。CA_INFO
CA_PATH