---
slug: "ssl-ca-certificarte-python-requests"
title: "UbuntuにSSL CA証明書を追加し、python requests で使う"
description: "1. もし、証明書が der 形式なら pem にしておく"
url: "https://www.ytyng.com/blog/ssl-ca-certificarte-python-requests"
publish_date: "2018-06-21T02:34:26Z"
created: "2018-06-21T02:34:26Z"
updated: "2026-02-27T12:37:48.089Z"
categories: ["Python"]
keywords: ""
featured_image_url: "https://media.ytyng.com/resize/20250605/1bec1d988c744eb086188b0a11d4cdb2.png.webp?width=768"
has_video: true
has_music: true
video_urls: ["https://media.ytyng.net/ytyng-blog/138/featured-video-1.mp4", "https://media.ytyng.net/ytyng-blog/138/featured-video-2.mp4", "https://media.ytyng.net/ytyng-blog/138/featured-video-3.mp4"]
music_urls: ["https://media.ytyng.net/ytyng-blog/138/featured-music-138-3.mp3", "https://media.ytyng.net/ytyng-blog/138/featured-music-138-4.mp3"]
lang: "ja"
---

# UbuntuにSSL CA証明書を追加し、python requests で使う

<p>1. もし、証明書が der 形式なら pem にしておく</p>
<pre style="background-color: #ffffff; color: #000000; font-family: 'Menlo'; font-size: 9.0pt;">openssl x509 -in torico.der -inform DER -out torico-ca.crt -outform PEM</pre>
<p></p>
<p>2. 証明書を /usr/local/share/ca-certificates/ にコピー</p>
<p></p>
<p>3. sudo update-ca-certificates を実行</p>
<p>この時点で、curl を使うときなど証明書が使われるようになり、証明書エラーが出なくなる。</p>
<p>ただし、Python Requests では証明書エラーとなる。</p>
<p></p>
<p>4. Python Requests で使う場合は、環境変数が必要</p>
<pre>REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt</pre>
<p></p>
<p>環境変数は /etc/environment に追加しておくといい</p>
<p></p>
<p>ちなみに、request の引数 verify= にCA のパスを指定しても参照することができる</p>
<pre>import requests<br />requests.get('https://xxx', verify='/usr/local/share/ca-certificates/torico-ca.crt')</pre>
<p></p>
<p></p>
<h2>Ansible</h2>
<p>Ansible で書くとこんな感じ</p>
<pre style="background-color: #ffffff; color: #000000; font-family: 'Menlo'; font-size: 9.0pt;">- <span style="color: #000080; font-weight: bold;">hosts: </span>servers<br />  <span style="color: #000080; font-weight: bold;">gather_facts: </span>no<br />  <span style="color: #000080; font-weight: bold;">become: </span>yes<br />  <span style="color: #000080; font-weight: bold;">tasks:<br /></span><span style="color: #000080; font-weight: bold;">    </span>- <span style="color: #000080; font-weight: bold;">copy:<br /></span><span style="color: #000080; font-weight: bold;">        src: </span>torico-ca.crt<br />        <span style="color: #000080; font-weight: bold;">dest: </span><span style="color: #008000; font-weight: bold;">"/usr/local/share/ca-certificates/torico-ca.crt"<br /></span><span style="color: #008000; font-weight: bold;">        </span><span style="color: #000080; font-weight: bold;">mode: </span>0664<br /><br />    - <span style="color: #000080; font-weight: bold;">shell: </span>update-ca-certificates<br /><br />    - <span style="color: #000080; font-weight: bold;">lineinfile:<br /></span><span style="color: #000080; font-weight: bold;">        dest: </span><span style="color: #008000; font-weight: bold;">"/etc/environment"<br /></span><span style="color: #008000; font-weight: bold;">        </span><span style="color: #000080; font-weight: bold;">insertafter: </span>EOF<br />        <span style="color: #000080; font-weight: bold;">line: </span><span style="color: #008000; font-weight: bold;">"REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt"<br /></span></pre>
<p></p>
<p>参考<br /><a href="https://stackoverflow.com/questions/42982143/python-requests-how-to-use-system-ca-certificates-debian-ubuntu" target="_blank">ssl - Python Requests - How to use system ca-certificates (debian/ubuntu)? - Stack Overflow</a><br style="box-sizing: inherit; color: #242729; font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;" /><br /></p>
