FreeBSD, Python and SSL certificate validation

May 22, 2015

When not explicitely giving a SSL certificate file to Python request, it will expect the system certificates to be in /etc/ssl/cert.pem.

However, in FreeBSD, they are in /usr/local/etc/ssl/cert.pem, resulting in the following error:

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

The quick and dirty fix for this was the following:

ln -s /usr/local/etc/ssl/cert.pem /etc/ssl/cert.pem

Now Python can find the system certificates, and we donโ€™t need to explicitely give the certificate file to request when doing the request (espacially useful when request is used by another module that donโ€™t allow to customize the certificates).

Want to leave a comment?

Start a conversation on Twitter or send me an email! ๐Ÿ’Œ
This post helped you? Buy me a coffee! ๐Ÿป