1. もし、証明書が der 形式なら pem にしておく
openssl x509 -in torico.der -inform DER -out torico-ca.crt -outform PEM
2. 証明書を /usr/local/share/ca-certificates/ にコピー
3. sudo update-ca-certificates を実行
この時点で、curl を使うときなど証明書が使われるようになり、証明書エラーが出なくなる。
ただし、Python Requests では証明書エラーとなる。
4. Python Requests で使う場合は、環境変数が必要
REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
環境変数は /etc/environment に追加しておくといい
ちなみに、request の引数 verify= にCA のパスを指定しても参照することができる
import requests
requests.get('https://xxx', verify='/usr/local/share/ca-certificates/torico-ca.crt')
Ansible で書くとこんな感じ
- hosts: servers
gather_facts: no
become: yes
tasks:
- copy:
src: torico-ca.crt
dest: "/usr/local/share/ca-certificates/torico-ca.crt"
mode: 0664
- shell: update-ca-certificates
- lineinfile:
dest: "/etc/environment"
insertafter: EOF
line: "REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt"
参考
ssl - Python Requests - How to use system ca-certificates (debian/ubuntu)? - Stack Overflow
コメント