2017-11-12 35 views
0

投稿リクエストを作成しようとしていますが、「HTTPリクエストにクライアント証明書がありません」というメッセージが表示されます。 私はverify = Falseでリクエストを作成しようとしましたが、私はまだ同じ問題を抱えています。 Pythonリクエスト「Httpリクエストにクライアント証明書がありません」

この

は私が今
r = requests.post('https://www.ezcardinfo.com/api/Login/ValidateUsername', params={'userName': my_user_name, 'devicePrint': devicePrint}, headers=header) 

を作ってるんだget要求で、私はどこのクライアント証明書を取得するか、どのように一般的なものを取得するのか分かりません。私はpyopensslと認証取得を持っていると私は、私はまだ403エラーを取得「/ request_ca_bundleする/パス」=を確認した場合

certifi.where() 

を入力して、私のrequest_ca_bundleのパスを見つけました。

答えて

1

... HTTP要求ではありませんクライアント証明書が存在

これは、サーバーが証明書を使用して自身を認証するようにクライアントを必要とすることを意味します。その相互認証では、サーバーはクライアントに証明書を提示するだけでなく、クライアントによって検証されますが、クライアントはサーバーにも独自の証明書を提示する必要があります。

クライアント証明書はよく使用されません。それらを使用する場合は、通常、特定のCAから証明書を取得するか、証明書を生成して証明書を生成し、それをアカウントに関連付ける必要があります。詳細は実際のサイトによって異なりますので、詳しくはドキュメントを参照するか連絡してください。

私がFalse =検証で要求を作ってみました...

これが唯一のサーバー証明書の検証を無効にしますので、クライアント証明書関連の問題には影響を与えません。

私はverify = 'path/to/request_ca_bundle'を設定すると、まだ403エラーが表示されます。

これは、サーバー証明書の検証に必要な信頼できるCAを設定するだけで、クライアント証明書に関連する問題には影響しません。

ブラウザで特定のURLにアクセスするときにも同じエラーが発生することに注意してください。ブラウザでこのエラーが表示されない場合は、そこに必要な証明書がインストールされている可能性があります。この場合、証明書と鍵の両方をエクスポートしてから、certパラメータ内で使用することができます。詳細はClient Side Certificatesを参照してください。

+0

申し訳ありませんが、ブラウザはどのようにしてその投稿要求を行うことができますか?ブラウザ内の特定のURLにアクセスしようとしたときに、同じエラーが発生しました。だから、私はChromeがどのようにしてその投稿要求を成功させることができても、その特定のURLにうまくアクセスできないか分からない。 –

+0

@HunterBetz:私はあなたを理解しているかどうかはわかりません。ある文章では、ブラウザがこの投稿要求をどのようにして行うことができるかを尋ねますが、別の文章でブラウザに同じエラーが発生した、私の理解から、これらは矛盾した発言です。とにかく、私の意見では、ブラウザはあなたが提供しなければならないクライアント証明書も必要とします。あなたが提供していない場合、ブラウザも失敗します。 –

関連する問題