python请求特定SNI certifi的“证书验证失败”

2024-09-30 08:27:14 发布

您现在位置:Python中文网/ 问答频道 /正文

多年来,我在几乎所有的项目中都使用python请求框架,从未遇到过这样的问题。在

只有网站www.pagedna.com据我所知。要复制的代码示例非常简单

import requests
requests.get("https://www.pagedna.com")

Chrome/Firefox浏览器打开这个站点,没问题,但是上面的代码片段给出了一个通用的SSL失败异常

^{pr2}$

如果我使用servername参数,OpenSSL提供了正确的信息

openssl s_client -showcerts -servername www.pagedna.com -connect www.pagedna.com:443

CONNECTED(00000003)
---
Certificate chain
 0 s:/OU=Domain Control Validated/CN=*.pagedna.com
   i:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certs.godaddy.com/repository//CN=Go Daddy Secure Certificate Authority - G2
-----BEGIN CERTIFICATE-----
MIIGrjCCBZagAwIBAgIJAJdLy96ULpdIMA0GCSqGSIb3DQEBCwUAMIG0MQswCQYD
VQQGEwJVUzEQMA4GA1UECBMHQXJpem9uYTETMBEGA1UEBxMKU2NvdHRzZGFsZTEa
MBgGA1UEChMRR29EYWRkeS5jb20sIEluYy4xLTArBgNVBAsTJGh0dHA6Ly9jZXJ0
cy5nb2RhZGR5LmNvbS9yZXBvc2l0b3J5LzEzMDEGA1UEAxMqR28gRGFkZHkgU2Vj
dXJlIENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTE4MDcyNzE4MzUyMloX
DTIwMDkyNTE3MTExMVowOzEhMB8GA1UECxMYRG9tYWluIENvbnRyb2wgVmFsaWRh
dGVkMRYwFAYDVQQDDA0qLnBhZ2VkbmEuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAt6B/jE5FjTKWdEtNj8oRxzqlk5fGjBfYbsKjdPuSi0t6i0a8
lN9yVYLhLM988s3XXvcU8E9d30aQ51JDjxtkID9VP4z4x8E/fWjGpJZ/Nh1XMrSf
rmIZEXr+SZzUBp2dISIJKgmNNr3vVWS4BmViL7YXxvgZzGiZwQRACkoFdfGkkGcT
h1WOPIYf7nzxyasLvddSN5j6BU4XgiTpdlJSWofXFdMJBFfHoTyLUiH+stMzE4wU
gA+oxKzRqhDHJ+L393i2mv4y2FXiQ0InTqyKRGGuX8zmoPirHCRAmMItk9gmUoi+
/3nDVnUlIG6LOgcXylVbn22W5WXN4iwtZ8TCVwIDAQABo4IDOTCCAzUwDAYDVR0T
AQH/BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDgYDVR0PAQH/
BAQDAgWgMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly9jcmwuZ29kYWRkeS5jb20v
Z2RpZzJzMS04NTIuY3JsMF0GA1UdIARWMFQwSAYLYIZIAYb9bQEHFwEwOTA3Bggr

etc...

但是,如果缺少-servername选项,它会给我一个不同的证书,我怀疑这就是这里的问题所在。在

相关pip安装如下

pyOpenSSL==19.0.0
requests==2.21.0
requests-toolbelt==0.8.0

使用python3.4

这是请求框架错误吗?我应该打开错误报告还是遗漏了什么?在


Tags: 项目代码importcom框架示例get网站
1条回答
网友
1楼 · 发布于 2024-09-30 08:27:14

... but the snippet above gives me the generic SSL failure exception ...

 ...'tls_process_server_certificate', 'certificate verify failed')],)",),))

实际上,这不是一般的SSL故障。它显然失败了,因为它无法验证证书。原因不是SNI和非SNI,因为SNI在请求中默认使用很长时间。在

原因是服务器配置错误。从SSLLabs report

This server's certificate chain is incomplete. Grade capped to B.

Chrome/Firefox browsers open this site up, no problem ...

桌面浏览器通常可以成功地解决这种常见的配置错误,例如缓存来自其他连接的中间证书,并使用这些证书来填充证书链中缺失的部分。但是,如果你尝试使用一个新的配置文件的Firefox,你会遇到同样的SSL问题。在

相关问题 更多 >

    热门问题