简体   繁体   English

证书验证失败:无法获取本地颁发者证书

[英]certificate verify failed: unable to get local issuer certificate

I am trying to get data from the web using python. I imported urllib.request package for it but while executing, I get error:我正在尝试使用 python 从 web 获取数据。我为它导入了 urllib.request package 但在执行时,出现错误:

certificate verify failed: unable to get local issuer certificate (_ssl.c:1045)

When I changed the URL to 'http' - I am able to get data.当我将 URL 更改为“http”时 - 我能够获取数据。 But, I believe, this avoids checking SSL certificate.但是,我相信,这避免了检查 SSL 证书。

So I checked on the inte.net and found one solution: Run /Applications/Python\ 3.7/Install\ Certificates.command所以我检查了 inte.net 并找到了一个解决方案:Run /Applications/Python\ 3.7/Install\ Certificates.command

This solved my problem.这解决了我的问题。 But I have no knowledge on SSL and the likes.但我对 SSL 等一无所知。 Can you help me understand what it actually did to solve my issue.你能帮我理解它实际上做了什么来解决我的问题吗?

If possible, please recommend me any good resource to learn about the security and certificates.如果可能的话,请给我推荐任何好的资源来了解安全和证书。 I am new to this.我是新来的。

Thanks!谢谢!

Note: I did go through the link - openssl, python requests error: "certificate verify failed"注意:我通过链接做了 go - openssl,python 请求错误:“证书验证失败”

My question differs from the one in link because, I want to know what actually happens when I install certifi package or run Install\ Certificates.command to fix the error.我的问题与链接中的问题不同,因为我想知道在安装certifi package 或运行Install\ Certificates.command以修复错误时实际发生了什么。 I have a poor understanding of securities.我对证券的了解很差。

For anyone who still wonders on how to fix this, i got mine by installing the " Install Certificates.command "对于仍然想知道如何解决此问题的任何人,我通过安装“ Install Certificates.command ”得到了我的

Here is how I did,这是我的做法,

安装 Certificates.commad 位置

Just double click on that file wait for it to install and in my case, you will be ready to go只需双击该文件等待它安装,在我的情况下,你就可以开始了

I hit the same issue on OSX, while my code was totally fine on Linux, and you gave the answer in your question!我在 OSX 上遇到了同样的问题,而我的代码在 Linux 上完全没问题,你在问题中给出了答案!

After inspecting the file you pointed to /Applications/Python 3.7/Install Certificates.command , it turned out that what this command replaces the root certificates of the default Python installation with the ones shipped through the certifi package.检查您指向/Applications/Python 3.7/Install Certificates.command的文件后,发现该命令将默认 Python 安装的根证书替换为通过certifi包提供的根证书。

certifi is a set of root certificates. certifi是一组根证书。 Each SSL certificate relies a chain of trust: you trust one specific certificate because you trust the parent of that certificate, for which you trust the parent, etc. At some point, there is no "parent" and those are "root" certificates.每个 SSL 证书都依赖于一个信任链:您信任一个特定证书,因为您信任该证书的父证书,您信任该证书的父证书,等等。在某些时候,没有“父”证书,而那些是“根”证书。 For those, there is no other solution than bundling commonly trusted root certificates (usually big trust companies like eg. "DigiCert").对于那些,除了捆绑通常受信任的根证书(通常是大型信任公司,例如“DigiCert”)之外,没有其他解决方案。

You can for instance see the root certificates in your browser security settings (for instance for Firefox->Preference->Privacy and security->view certificates->Authorities).例如,您可以在浏览器安全设置中查看根证书(例如 Firefox->Preference->Privacy and security->view certificate->Authorities)。

Coming back to the initial problem, and prior to running the .command file, executing this returns for me an empty list on a clean installation:回到最初的问题,在运行.command文件之前,执行它会为我返回一个干净安装的空列表:

import os
import ssl                                        
openssl_dir, openssl_cafile = os.path.split(      
    ssl.get_default_verify_paths().openssl_cafile)
# no content in this folder
os.listdir(openssl_dir)
# non existent file
print(os.path.exists(os.path.join(openssl_dir, openssl_cafile)))

This means that there is no default certificate authority for the Python installation on OSX.这意味着 OSX 上的 Python 安装没有默认的证书颁发机构。 A possible default is exactly the one provided by the certifi package.可能的默认值正是certifi包提供的默认值。

After that, you just can create an SSL context that has the proper default as the following ( certifi.where() gives the location of a certificate authority):之后,您只需创建一个具有正确默认值的 SSL 上下文,如下所示( certifi.where()提供证书颁发机构的位置):

import platform
# ...

ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS)
ssl_context.verify_mode = ssl.CERT_REQUIRED
ssl_context.check_hostname = True
ssl_context.load_default_certs()

if platform.system().lower() == 'darwin':
    import certifi
    ssl_context.load_verify_locations(
        cafile=os.path.relpath(certifi.where()),
        capath=None,
        cadata=None)

and make request to an url from python like this:并像这样从 python 向url发出请求:

import urllib
# previous context
https_handler = urllib.request.HTTPSHandler(context=ssl_context)

opener = urllib.request.build_opener(https_handler)
ret = opener.open(url, timeout=2)

Creating a symlink from OS certificates to Python worked for me:创建从操作系统证书到 Python 的符号链接对我有用:

ln -s /etc/ssl/* /Library/Frameworks/Python.framework/Versions/3.9/etc/openssl

(I'm on macOS, using pyenv ) (我在 macOS 上,使用pyenv

This worked in all OS:这适用于所有操作系统:

import ssl
import certifi
from urllib.request import urlopen

request = "https://example.com"
urlopen(request, context=ssl.create_default_context(cafile=certifi.where()))

For those who this problem persists: - Python 3.6 (some other versions too?) on MacOS comes with its own private copy of OpenSSL.对于那些仍然存在这个问题的人: - MacOS 上的 Python 3.6(还有其他版本?)带有自己的 OpenSSL 私有副本。 That means the trust certificates in the system are no longer used as defaults by the Python ssl module.这意味着 Python ssl 模块不再将系统中的信任证书用作默认值。 To fix that, you need to install a certifi package in your system.要解决这个问题,您需要在系统中安装一个certifi包。

You may try to do it in two ways:您可以尝试通过两种方式进行操作:

1) Via PIP: 1) 通过画中画:

pip install --upgrade certifi

2) If it doesn't work, try to run a Cerificates.command that comes bundled with Python 3.6 for Mac: 2) 如果它不起作用,请尝试运行与 Python 3.6 for Mac 捆绑在一起的 Cerificates.command:

open /Applications/Python\ 3.6/Install\ Certificates.command

One way or another, you should now have certificates installed, and Python should be able to connect via HTTPS without any issues.无论如何,您现在应该已经安装了证书,并且 Python 应该能够通过 HTTPS 连接而没有任何问题。

Hope this helped.希望这有帮助。

I would like to provide a reference.我想提供一个参考。 I use cmd + space, then type Install Certificates.command , and then press Enter.我使用 cmd + 空格,然后键入Install Certificates.command ,然后按 Enter。 After a short while, the command line interface pops up to start the installation.片刻后,弹出命令行界面开始安装。

 -- removing any existing file or link
 -- creating symlink to certifi certificate bundle
 -- setting permissions
 -- update complete

Finally, it fixes the errors.最后,它修复了错误。

Paste the following code at the start:在开头粘贴以下代码:

# paste this at the start of code
import ssl 

try:
    _create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
    pass
else:
    ssl._create_default_https_context = _create_unverified_https_context

The cause for this error in my case was that OPENSSLDIR was set to a path which did not contain the actual certificates, possibly caused by some upgrading / reinstallation.在我的情况下,此错误的原因是 OPENSSLDIR 设置为不包含实际证书的路径,这可能是由某些升级/重新安装引起的。

To verify this if this might be the case for you, try running:要验证这是否适合您,请尝试运行:

openssl s_client -CApath /etc/ssl/certs/ -connect some-domain.com:443

If you remove the -CApath /etc/ssl/certs/ and get a 20 error code, then this is the likely cause.如果您删除-CApath /etc/ssl/certs/并获得20错误代码,那么这可能是原因。 You can also check what the OPENSSLDIR is set to by running openssl version -a .您还可以通过运行openssl version -a检查 OPENSSLDIR 的设置。

Since changing the OPENSSLDIR requires re-compilation, I found the easiest solution to be just creating a symlink in the existing path: ln -s /etc/ssl/certs your-openssldir/certs由于更改 OPENSSLDIR 需要重新编译,我发现最简单的解决方案是在现有路径中创建一个符号链接: ln -s /etc/ssl/certs your-openssldir/certs

Certifi provides Mozilla's carefully curated collection of Root Certificates for validating the trustworthiness of SSL certificates while verifying the identity of TLS hosts. Certifi提供 Mozilla 精心策划的根证书集合,用于验证 SSL 证书的可信度,同时验证 TLS 主机的身份。 It has been extracted from the Requests project.它是从Requests项目中提取的。

pip install certifi

Or running the program code below:或者运行下面的程序代码:

# install_certifi.py
#
# sample script to install or update a set of default Root Certificates
# for the ssl module.  Uses the certificates provided by the certifi package:
#       https://pypi.python.org/pypi/certifi

import os
import os.path
import ssl
import stat
import subprocess
import sys

STAT_0o775 = ( stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR
             | stat.S_IRGRP | stat.S_IWGRP | stat.S_IXGRP
             | stat.S_IROTH |                stat.S_IXOTH )


def main():
    openssl_dir, openssl_cafile = os.path.split(
        ssl.get_default_verify_paths().openssl_cafile)

    print(" -- pip install --upgrade certifi")
    subprocess.check_call([sys.executable,
        "-E", "-s", "-m", "pip", "install", "--upgrade", "certifi"])

    import certifi

    # change working directory to the default SSL directory
    os.chdir(openssl_dir)
    relpath_to_certifi_cafile = os.path.relpath(certifi.where())
    print(" -- removing any existing file or link")
    try:
        os.remove(openssl_cafile)
    except FileNotFoundError:
        pass
    print(" -- creating symlink to certifi certificate bundle")
    os.symlink(relpath_to_certifi_cafile, openssl_cafile)
    print(" -- setting permissions")
    os.chmod(openssl_cafile, STAT_0o775)
    print(" -- update complete")

if __name__ == '__main__':
    main()

Brew has not run the Install Certificates.command that comes in the Python3 bundle for Mac. Brew 没有运行 Mac 的 Python3 捆绑包中的 Install Certificates.command。

I had the error with conda on linux.我在 linux 上遇到了 conda 的错误。 My solution was simple.我的解决方案很简单。

conda install -c conda-forge certifi

I had to use the conda forge since the default certifi appears to have problems.我不得不使用 conda forge,因为默认证书似乎有问题。

Suddenly I started facing this issue in my windows environment.突然间,我开始在我的 Windows 环境中面临这个问题。 To aggravate, it was showing up when I ran pip as well, so the issue was not with the remote server certificate.更糟糕的是,当我运行 pip 时它也出现了,所以问题不在于远程服务器证书。

After trying many different things, I've found the solution combining bit and pieces from multiple answers:在尝试了许多不同的事情之后,我找到了结合多个答案的点点滴滴的解决方案:

  • Add trusted hosts to pip.ini: pip config set global.trusted-host "pypi.org files.pythonhosted.org pypi.python.org" (doesn't work only passing as pip install parameter)将受信任的主机添加到 pip.ini:pip config set global.trusted-host "pypi.org files.pythonhosted.org pypi.python.org"(仅作为 pip 安装参数传递时不起作用)

  • Update system certificates: pip install pip-system-certs (doesn't work installing python-certifi-win32)更新系统证书:pip install pip-system-certs(无法安装 python-certifi-win32)

Now https requests are working again \o/现在 https 请求再次工作 \o/

This page is the top google hit for "certificate verify failed: unable to get local issuer certificate", so while this doesn't directly answer the original question, below is a fix for a problem with the same symptom.此页面是“证书验证失败:无法获得本地颁发者证书”的热门谷歌点击,因此虽然这不能直接回答原始问题,但以下是针对具有相同症状的问题的修复。 I ran into this while trying to add TLS to an xmlrpc service.我在尝试将 TLS 添加到 xmlrpc 服务时遇到了这个问题。 This requires use of the fairly low-level ssl.SSLContext class.这需要使用相当低级的ssl.SSLContext类。 The error indicates that a certificate is missing.该错误表明缺少证书。 The fix was to do several things when constructing SSLContext objects:修复是在构造SSLContext对象时做几件事:

First, in the client:首先,在客户端:

def get_client():
    context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
    # Load the default certs:
    context.load_default_certs()

    # Optionally, install the intermediate certs.
    # This _should_ be handled by the server, but
    # maybe helpful in some cases.
    # context.load_verify_locations('path/to/ca_bundle.crt')
    return xmlrpc.client.ServerProxy('https://server.yourdomain.com/', context=context)

In the server, you need to install the intermediate certs in the context:在服务器中,您需要在上下文中安装中间证书:

class SecureXMLRPCServer(socketserver.TCPServer, 
        xmlrpc.server.SimpleXMLRPCDispatcher):
    # https://gist.github.com/monstermunchkin/1100226
    allow_reuse_address = True

    def __init__(self, addr, certfile, keyfile=None,
            ca_bundle=None,
            requestHandler=xmlrpc.server.SimpleXMLRPCRequestHandler,
            logRequests=True, allow_none=False, encoding=None, 
            bind_and_activate=True, ssl_version=ssl.PROTOCOL_TLSv1_2):
        self.logRequests = logRequests

        # create an SSL context
        self.context = ssl.SSLContext(ssl_version)
        self.context.load_default_certs()

        # The server is the correct place to load the intermediate CA certificates:
        self.context.load_verify_locations(ca_bundle)
        self.context.load_cert_chain(certfile=certfile, keyfile=keyfile)

        xmlrpc.server.SimpleXMLRPCDispatcher.__init__(self, allow_none, 
                encoding)
        # call TCPServer constructor
        socketserver.TCPServer.__init__(self, addr, requestHandler, 
                bind_and_activate)

        if fcntl is not None and hasattr(fcntl, 'FD_CLOEXEC'):
            flags = fcntl.fcntl(self.fileno(), fcntl.F_GETFD)
            flags |= fcntl.FD_CLOEXEC
            fcntl.fcntl(self.fileno(), fcntl.F_SETFD, flags)

    def get_request(self):
        newsocket, fromaddr = self.socket.accept()
        # create an server-side SSL socket
        sslsocket = self.context.wrap_socket(newsocket, server_side=True)
        return sslsocket, fromaddr

Caveat: I am not super knowledgeable about certificates, but I think this is worth checking early.警告:我对证书不是很了解,但我认为这值得尽早检查。

Before spending any time reconfiguring your code/packages/system, make sure it isn't an issue with the server you are trying to download from.在花时间重新配置您的代码/包/系统之前,请确保您尝试下载的服务器没有问题。

I think the error can be misleading because "unable to get local issuer certificate" makes it seems like it's a problem with your local machine, but that may not necessarily be the case.我认为该错误可能具有误导性,因为“无法获得本地颁发者证书”使您的本地计算机看起来有问题,但情况可能不一定如此。

Try changing the page you are trying to load to something that is probably good, like https://www.google.com and see if the issue persists.尝试将您尝试加载的页面更改为可能不错的内容,例如https://www.google.com ,然后查看问题是否仍然存在。 Additionally, check the domain that's giving you problems against the search tool at https://www.digicert.com/help/ .此外,通过https://www.digicert.com/help/上的搜索工具检查给您带来问题的域。

In my case, DigiCert's tool told me that "The certificate is not signed by a trusted authority (checking against Mozilla's root store)."就我而言,DigiCert 的工具告诉我“证书未由受信任的机构签名(检查 Mozilla 的根存储)。” That would explain why I seemed to have the root certificates installed but still had the error.这可以解释为什么我似乎安装了根证书但仍然有错误。 When I tested loading a different site with HTTPS, I had no issues.当我测试使用 HTTPS 加载不同的站点时,我没有遇到任何问题。

If this case applies to you, then I think you probably have 3 logical options (in order of preference): 1) fix the server if it's under your control, 2) disable certificate checking while continuing to use HTTPS, 3) skip HTTPS and go to HTTP.如果这种情况适用于您,那么我认为您可能有 3 个逻辑选项(按优先顺序):1)如果服务器在您的控制之下,则修复它,2)在继续使用 HTTPS 时禁用证书检查,3)跳过 HTTPS 和转到 HTTP。

For me the problem was that I was setting REQUESTS_CA_BUNDLE in my .bash_profile对我来说,问题是我在我的.bash_profile中设置了REQUESTS_CA_BUNDLE

/Users/westonagreene/.bash_profile:
...
export REQUESTS_CA_BUNDLE=/usr/local/etc/openssl/cert.pem
...

Once I set REQUESTS_CA_BUNDLE to blank (ie removed from .bash_profile), requests worked again.一旦我将REQUESTS_CA_BUNDLE设置为空白(即从 .bash_profile 中删除), requests就会再次起作用。

export REQUESTS_CA_BUNDLE=""

The problem only exhibited when executing python requests via a CLI (Command Line Interface).该问题仅在通过 CLI(命令行界面)执行 python requests时出现。 If I ran requests.get(URL, CERT) it resolved just fine.如果我运行requests.get(URL, CERT)它解决得很好。

Mac OS Catalina (10.15.6). Mac OS Catalina (10.15.6)。 Pyenv of 3.6.11. 3.6.11 的 Pyenv。 Error message I was getting: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)我收到的错误消息: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)

This answer elsewhere: https://stackoverflow.com/a/64152045/4420657这个答案在别处: https ://stackoverflow.com/a/64152045/4420657

below link has step by step instr to fix the issue. 下面的链接具有逐步说明以解决此问题。 (in MacOS) (在MacOS中)

https://www.dev2qa.com/how-to-fix-python-error-certificate-verify-failed-unable-to-get-local-issuer-certificate-in-mac-os/ https://www.dev2qa.com/how-to-fix-python-error-certificate-verify-failed-unable-to-get-local-issuer-certificate-in-mac-os/

this worked for me. 这对我有用。

As the question don't have the tag [macos] I'm posting a solution for the same problem under ubuntu :由于问题没有标签 [macos] 我在 ubuntu 下发布相同问题的解决方案:

sudo apt install ca-certificates
sudo update-ca-certificates --fresh
export SSL_CERT_DIR=/etc/ssl/certs

Solution come form Zomatree on Github.解决方案来自 Github 上的Zomatree

Experienced this on Windows and after struggling with this, I downloaded the chain of SSL Certificates for the webpage在 Windows 上经历过这个,在努力解决这个问题后,我下载了网页的 SSL 证书链

Steps for this on Chrome - (the padlock on the top left -> tap "Connection is secure" -> tap "Certificate is valid") To view the certificate chain, select the Certification path.在 Chrome 上执行此操作的步骤 - (左上角的挂锁 -> 点击“连接安全” -> 点击“证书有效”)要查看证书链,请选择证书路径。 To download each certificate, view the certificate in "Certification Path" tab open the "details" tab then copy to file要下载每个证书,请在“证书路径”选项卡中查看证书打开“详细信息”选项卡,然后复制到文件

Once downloaded, open where you save the certificates, then compile into one .PEM file下载后,打开保存证书的位置,然后编译成一个 .PEM 文件

Use this as an example:以此为例:

    openssl x509 -in inputfilename.cer -inform DER -outform PEM  >> .pem

The order of this matters, start with the lowest certificate in the chain otherwise your bundle will be invalid此顺序很重要,从链中最低的证书开始,否则您的捆绑包将无效

Finally最后

    response = requests.get('enter/urll/here', verify ='/path/to/created bundle')

For me all the suggested solutions didn't work.对我来说,所有建议的解决方案都不起作用。 However, I was running the code in a terminal from my companies' PC, which has an IT security software package installed called ZScaler.但是,我在公司 PC 的终端中运行代码,该 PC 安装了一个名为 ZScaler 的 IT 安全软件包。 Disabling the ZScaler software solved all my issues.禁用 ZScaler 软件解决了我所有的问题。

I recently had this issue while connecting to MongoDB Atlas.我最近在连接到 MongoDB Atlas 时遇到了这个问题。 I updated to the latest certifi python package and it works now.我更新到最新的certifi python 包,它现在可以工作了。

(python 3.8, upgraded to certifi 2020.4.5.1, previously certifi version 2019.11.28) (python 3.8,升级到 certifi 2020.4.5.1,之前的 certifi 版本 2019.11.28)

Environment: Mac, Python 3.10, iTerm,环境:Mac,Python 3.10,iTerm,

  1. Search in Finder: Install Certificates.command在 Finder 中搜索:安装 Certificates.command
    在此处输入图像描述
  2. Get Info获取信息在此处输入图像描述
  3. Open with: iTerm.app打开方式:iTerm.app
    在此处输入图像描述
  4. double click 'Install Certificates.command'双击“安装 Certificates.command”

Waiting for install the certificates.等待安装证书。 Solve it.解决这个问题。

Simply run this:简单地运行这个:

pip install --trusted-host=pypi.org --trusted-host=files.pythonhosted.org --user pip-system-certs'

I ran into this on Ventura with python 3.9-10, even though I had already tried this:我在 Ventura 上用 python 3.9-10 遇到了这个问题,尽管我已经尝试过这个:

  1. added my private CA certificates to /etc/ssl/cert.pem, /etc/ssl/certs/将我的私人 CA 证书添加到 /etc/ssl/cert.pem, /etc/ssl/certs/
  2. added my private CA certificates to the certifi specific cert.pem file将我的私人 CA 证书添加到 certifi 特定的 cert.pem 文件中
  3. added my private CA certificates to my keychain into the 'System' bucket将我的私人 CA 证书添加到我的钥匙串到“系统”存储桶中
  4. set REQUESTS_CA_BUNDLE=/etc/ssl/cert.pem设置 REQUESTS_CA_BUNDLE=/etc/ssl/cert.pem

This made requests work, but HTTPSConnection and urllib3 failed validation, so it turns out there is yet a place to add CA certificates:这使得请求有效,但是 HTTPSConnection 和 urllib3 验证失败,所以事实证明还有一个地方可以添加 CA 证书:

  1. /usr/local/etc/ca-certificates/cert.pem /usr/local/etc/ca-certificates/cert.pem

I believe this is because I have installed openssl via brew, and this sets up the above file, and adds a symlink from /usr/local/etc/openssl@1.1/cert.pem.我相信这是因为我已经通过 brew 安装了 openssl,这会设置上面的文件,并添加来自 /usr/local/etc/openssl@1.1/cert.pem 的符号链接。

So if anyone experiences certificate validation failing after having installed openssl via brew, then this is likely the explanation.因此,如果有人在通过 brew 安装 openssl 后遇到证书验证失败的情况,那么这很可能就是解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 SSL 证书验证失败:无法获取本地颁发者证书 - SSL Certificate verify failed: unable to get local issuer certificate 错误:证书验证失败:无法获取本地颁发者证书 - Error: Certificate verify failed: unable to get local issuer certificate SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书)' - SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate)' SSL:CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1108) Discord/python - SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108) Discord/python urlopen 错误 [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1056) - urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056) ConnectError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1123) - ConnectError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1123) <urlopen error [ssl: certificate_verify_failed] certificate verify failed: unable to get local issuer (_ssl.c:1108)></urlopen> - <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)> 气刹错误:urlopen错误[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败:无法获取本地发行者证书 - Airbrake error: urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获得本地颁发者证书 (_ssl.c:1056) - ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056) SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1129)')) - SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)'))
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM