はじめに
pythonライブラリのCartopyの地図データはインストール時にはローカルに保存せず、利用する際にネット経由でダウンロードする。その際に標準ライブラリurllib.request
を利用する。
ただしCartopyでプロキシ設定やSSLサーバ証明書の設定ができないという問題があり、外部の設定で行わなければならない。
標準ライブラリurllib.request
のうちSSLに関係するものは標準ライブラリssl
が関係し、ssl
はopenssl
を使用している。
プロキシ設定について
環境変数
- http_proxy=protocol://[user:passwd@]host:port
- https_proxy=protocol://[user:passwd@]host:port
SSLサーバ証明書について
pipの場合
こちらのca-certificates
の仕組みでSSLサーバ証明書を更新するとopenssl
でデフォルト利用している証明書が更新される。
anacondaの場合
import ssl
ssl.get_default_verify_paths()
# DefaultVerifyPaths(
# cafile='/home/XXXX/miniconda3/envs/XXXX/ssl/cert.pem',
# capath='/home/XXXX/miniconda3/envs/XXXX/ssl/certs',
# openssl_cafile_env='SSL_CERT_FILE',
# openssl_cafile='/home/XXXX/miniconda3/envs/XXXX/ssl/cert.pem',
# openssl_capath_env='SSL_CERT_DIR',
# openssl_capath='/home/XXXX/miniconda3/envs/XXXX/ssl/certs'
# )
で指定されているcafileやcapathにSSLサーバ証明書を更新するか、あるいはca-certificates
の仕組みで更新したcafileやcapathを環境変数SSL_CERT_FILE,SSL_CERT_DIRで指定するかのどちらかである。簡単な方は後者。
Ubuntu 22.04での環境変数
SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
SSL_CERT_DIR=/etc/ssl/certs
CentOS Stream 9での環境変数
SSL_CERT_FILE=/etc/pki/tls/cert.pem
SSL_CERT_DIR=/etc/pki/tls/certs