Brew Python 3.6.1 certificate installation: [SSL: CERTIFICATE_VERIFY_FAILED] completed

I installed Python 3.6 using

brew install python3

and tried to download the file from six.moves.urllib.request.urlretrievefrom https, but it gives an error

ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verification failed (_ssl.c: 749)

In a Python installation (from .pkg), README indicates that the command must be run Install Certificates.commandafter installation in

  1. to establish certifi
  2. symbolic link certification path for certify

be able to use certificates.

However, when installing brew, this file does not exist and does not seem to start.

+10
source share
2 answers

, - Brew Install Certificates.command, Python3 Mac. script ( Install Certificates.command) brew install python3:

# 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()
+15

Mac OS X:

1) Python 3.6.5 Python, Python https://www.python.org/downloads/

, Python , homebrew.

2) , "./Install Certificates.command", Python 3.6.

cd "/Applications/Python 3.6/" sudo "./Install Certificates.command"

+5

Source: https://habr.com/ru/post/1679709/


All Articles