At https://myhost.example.com
I have a my own site with a certificate signed by my own CA.
I am using macOS and I added the custom CA certificate to my macOS Keychain. It works properly in the Apple-provided Python with the following minimal code:
import requests
r = requests.get('https://myhost.example.com')
Now I want to execute the same program in the Miniconda environment (the base one):
I added my CA certificate to ~/miniconda2/ssl/cacert.pem
with:
# cat myownca.pem >> ~/miniconda2/ssl/cacert.pem
The certificate starts with the following, so I guess it is the proper PEM format:
-----BEGIN CERTIFICATE-----
MIIDZzCCAk+gAwIBA...
I checked:
# python -c "import ssl; print(ssl.get_default_verify_paths())"
DefaultVerifyPaths(cafile='/Users/asylumine/miniconda2/ssl/cert.pem', capath='/Users/asylumine/miniconda2/ssl/certs', openssl_cafile_env='SSL_CERT_FILE', openssl_cafile='/Users/asylumine/miniconda2/ssl/cert.pem', openssl_capath_env='SSL_CERT_DIR', openssl_capath='/Users/asylumine/miniconda2/ssl/certs')
However the Python program is failing:
Traceback (most recent call last):
File "testinpy.py", line 2, in <module>
r = requests.get('https://myhost.example.com')
File "/Users/asylumine/miniconda2/lib/python2.7/site-packages/requests/api.py", line 72, in get
return request('get', url, params=params, **kwargs)
File "/Users/asylumine/miniconda2/lib/python2.7/site-packages/requests/api.py", line 58, in request
return session.request(method=method, url=url, **kwargs)
File "/Users/asylumine/miniconda2/lib/python2.7/site-packages/requests/sessions.py", line 508, in request
resp = self.send(prep, **send_kwargs)
File "/Users/asylumine/miniconda2/lib/python2.7/site-packages/requests/sessions.py", line 618, in send
r = adapter.send(request, **kwargs)
File "/Users/asylumine/miniconda2/lib/python2.7/site-packages/requests/adapters.py", line 506, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='myhost.example.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')],)",),))
What am I missing?