【问题标题】:Why I receive CERTIFICATE_VERIFY_FAILED from google adwords api?为什么我从 google adwords api 收到 CERTIFICATE_VERIFY_FAILED?
【发布时间】:2015-08-22 16:02:47
【问题描述】:

为什么 google adwords api 在调用此链接时停止:

https://adwords.google.com/api/adwords/mcm/v201502/CustomerService?wsdl

出现此错误 - 我是否应该在之前加载一些证书以及如何加载?

urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)>

使用 Python 2.7.10。

完整源代码: create_adwords_client_without_yaml.py

完整的错误代码:

Traceback (most recent call last):
  File "C:/Users/Crezary Wagner/PycharmProjects/learn-adwords/src/examples/create_adwords_client_without_yaml.py", line 56, in <module>
    CLIENT_CUSTOMER_ID)
  File "C:/Users/Crezary Wagner/PycharmProjects/learn-adwords/src/examples/create_adwords_client_without_yaml.py", line 50, in main
    customer = adwords_client.GetService('CustomerService').get()
  File "C:\root\Python27\lib\site-packages\googleads\adwords.py", line 256, in GetService
    proxy=proxy_option, cache=self.cache, timeout=3600)
  File "C:\root\Python27\lib\site-packages\suds\client.py", line 115, in __init__
    self.wsdl = reader.open(url)
  File "C:\root\Python27\lib\site-packages\suds\reader.py", line 150, in open
    d = self.fn(url, self.options)
  File "C:\root\Python27\lib\site-packages\suds\wsdl.py", line 136, in __init__
    d = reader.open(url)
  File "C:\root\Python27\lib\site-packages\suds\reader.py", line 74, in open
    d = self.download(url)
  File "C:\root\Python27\lib\site-packages\suds\reader.py", line 92, in download
    fp = self.options.transport.open(Request(url))
  File "C:\root\Python27\lib\site-packages\suds\transport\https.py", line 62, in open
    return HttpTransport.open(self, request)
  File "C:\root\Python27\lib\site-packages\suds\transport\http.py", line 67, in open
    return self.u2open(u2request)
  File "C:\root\Python27\lib\site-packages\suds\transport\http.py", line 132, in u2open
    return url.open(u2request, timeout=tm)
  File "C:\root\Python27\lib\urllib2.py", line 431, in open
    response = self._open(req, data)
  File "C:\root\Python27\lib\urllib2.py", line 449, in _open
    '_open', req)
  File "C:\root\Python27\lib\urllib2.py", line 409, in _call_chain
    result = func(*args)
  File "C:\root\Python27\lib\urllib2.py", line 1240, in https_open
    context=self._context)
  File "C:\root\Python27\lib\urllib2.py", line 1197, in do_open
    raise URLError(err)
urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)>

【问题讨论】:

  • 确保操作系统已完全更新。可能缺少您需要的公共证书。

标签: python-2.7 google-api google-ads-api google-api-client google-api-python-client


【解决方案1】:

Python 使用来自“系统 ssl 证书存储”的证书来验证 https 连接,如果存储中没有任何适当的 ssl 证书,就会出现这样的错误。 下载 ssl 证书(在浏览器中打开您的 https 链接,然后单击地址栏中的锁定图标 > 更多信息 > 查看证书 > 详细信息 > 导出)并将其安装在您的系统上,如该链接所述http://windows.microsoft.com/en-us/windows/import-export-certificates-private-keys#1TC=windows-7

【讨论】:

    【解决方案2】:

    不确定这是否是问题所在,但值得检查一下。

    Python 2.7.9 默认为HTTP 连接启用证书验证。

    您要连接的服务器没有您的客户端信任的证书。 pysphere 应该为这个用例适当地配置SSL

    试着提出你的要求:

    requests.get('https://adwords.google.com/api/adwords/mcm/v201502/CustomerService?wsdl', verify=False)
    

    【讨论】:

    • 我可以停止验证,因此无法使用您的解决方案。我知道它会起作用,但必须安装受信任的证书。
    • 选中此link,然后使用 OAUTH 2.0 授权您的应用程序。
    • 此链接对证书问题没有帮助。这是很好的信息来源,但没有关于证书问题的信息。 Google 官方示例不起作用。
    【解决方案3】:

    试试这个,它对我有帮助:

    import ssl
    
    ssl._create_default_https_context = ssl._create_unverified_context
    

    【讨论】:

      【解决方案4】:

      我遇到了这个问题。我使用相同的 DNS 阻止列表设置了我的电话,但在我启用该工具并恢复此特定项目的工作后,它并没有立即显现出来。我建议仔细检查您的设置并确认没有启用任何广告拦截器(在我的情况下为 DNS 级别,即 NextDNS/托管 PiHole)。花费数小时尝试 python 版本、证书、重新安装东西。希望这对某人有帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多