Python请求" Http请求中没有客户端证书"

时间:2017-11-12 18:59:17

标签: python ssl python-requests pyopenssl

尝试发布帖子请求,并且我收到了一条403响应,其中包含" Http请求中没有客户端证书的消息"。 我尝试使用verify = False发出请求,但我仍遇到同样的问题。

这是我正在制作的获取请求

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

现在,我不知道从哪里获得客户证书或者如何获得一般证书。我有pyopenssl和certifi,并通过输入

找到了我的request_ca_bundle的路径
certifi.where()

当我设置verify =' path / to / request_ca_bundle'我仍然得到403错误。

1 个答案:

答案 0 :(得分:1)

  

... Http Request中没有客户证书

这意味着服务器要求客户端使用证书对自身进行身份验证。在相互认证中,不仅服务器向客户端提供证书,然后由客户端验证,但客户端也需要向服务器提供自己的证书。

不经常使用客户端证书。如果使用它们,通常要求您从特定CA获取证书,或者您生成某个证书的证书并将其与您的帐户关联。详细信息取决于实际网站,您必须查看其文档或与他们联系以获取详细信息。

  

我尝试使用verify = False ...

发出请求

这只会禁用服务器证书的验证,因此不会影响与客户端证书相关的问题。

  

当我设置verify =' path / to / request_ca_bundle'我仍然得到403错误。

这仅设置验证服务器证书所需的可信CA,因此不会影响与客户端证书相关的问题。

请注意,使用浏览器访问特定网址时也会遇到相同的错误。如果您没有通过浏览器收到此错误,则可能需要安装必要的证书。在这种情况下,您需要导出证书和密钥,然后您可以在cert参数中使用它,请参阅文档中的Client Side Certificates