【问题标题】:Python Requests SSL error: hostname doesn't mactch either ofPython 请求 SSL 错误:主机名不匹配
【发布时间】:2019-09-17 10:40:01
【问题描述】:

我正在尝试通过 Python 请求连接到我的内部服务之一:https://myservice.my-alternative-domain.com。我正在使用 Python 3.6

我正在使用自定义 CA 捆绑包来验证请求,但出现下一个错误:

SSLError:主机名“myservice.my-domain.com”与“my-domain.com”、“my-alternative-domain.com”中的任何一个都不匹配

内部服务使用的 SSL 证书具有 CN:my-domain.com 和 SAN(主题备用名称):'my-domain.com'、'my-alternative-domain.com'

所以,我正在尝试通过其中一个替代名称访问服务(必须是这样的,并且不受我控制)

我认为错误是正确的,并且证书也应该具有 SAN:

'*.my-alternative-domain.com'

为了使请求生效。

唯一让我困惑的是,我可以通过浏览器访问服务。

有人可以确认 Python 请求的行为是正确的吗?

这就是我调用服务的方式:

response = requests.get('https://myservice.my-alternative-domain.com', params=params, headers=headers, verify=ca_bundle)

谢谢

【问题讨论】:

  • 您是否尝试将 SSL 验证设置为 false?更多详情请见stackoverflow.com/questions/15445981/…
  • 如果我将 SSL verfiy 设置为 false,它可以工作。但我希望验证能够与我的自定义 CA 捆绑包一起使用。这是对我的要求。
  • 我认为您需要提供有关您的证书(CN、SAN)和您的代码的更多详细信息。
  • CN 是:'my-domain.com'。 SAN 是:“my-alternative-domain.com”和“my-domain.com”。我会用这个和代码更新问题
  • 您描述请求行为的方式是正确的。您确定浏览器获得完全相同的证书并访问完全相同的站点吗?

标签: python ssl openssl python-requests


【解决方案1】:

通过验证,因为 false 可能有效

x=requests.get(-----,verify=false)

【讨论】:

  • 我想用我的 CA Bundle 验证请求,这就是重点
  • 永远不要禁用证书验证。然后,您几乎取消了 TLS 的所有用处,您还不如恢复为纯文本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-24
  • 1970-01-01
  • 2021-08-17
  • 2019-05-10
  • 2015-04-30
  • 2016-08-24
  • 1970-01-01
相关资源
最近更新 更多