Додавання самопідписаного сертифіката до "списку довіри"


87

Я створив самопідписаний сертифікат для свого сервера збірки, і я хотів би довіряти глобальному сертифікату на моїй машині, оскільки я створив ключ сам і мені боляче бачити попередження.

Я на Ubuntu 12.04. Як я можу взяти сертифікат і довіряти йому глобально, щоб браузери (Google Chrome), утиліти CLI (wget, curl) та мови програмування (Python, Java та ін.) Довіряли підключенню до https://mysite.com, не запитуючи питання?


Усі TLS повинні вестися через OpenSSL, тому саме тут потрібно шукати документацію. У цьому випадку: gagravarr.org/writing/openssl-certs/… виглядає корисним.
msw

Відповіді:


87

Проста відповідь на це полягає в тому, що майже кожен додаток обробляє це по-різному.

Також OpenSSL та GNUTLS (найбільш широко використовувані бібліотеки обробки сертифікатів, що використовуються для обробки підписаних сертифікатів) поводяться по-різному в їх обробці certs, що також ускладнює проблему. Також операційні системи використовують різні механізми для використання «кореневого ЦЗ», що використовується більшістю веб-сайтів.

Це вбік, подаючи Debian як приклад. Встановіть ca-certificatesпакет:

apt-get install ca-certificates

Потім ви копіюєте загальнодоступну половину свого непідтвердженого сертифіката ЦС (той, який ви використовуєте для підписання вашої КСВ) в каталог сертифікатів ЦС (як корінь):

cp cacert.pem /usr/share/ca-certificates

І отримайте його для відновлення каталогу із включеним сертифікатом, запустіть як root:

dpkg-reconfigure ca-certificates

і виберіть askопцію, перейдіть до свого сертифіката, позначте його для включення та виберіть Добре.

Більшість браузерів використовують власну базу даних CA, тому такі інструменти, як, наприклад certutil, потрібно використовувати для зміни свого вмісту (на Debian, який надається libnss3-toolsпакетом). Наприклад, із Chrome ви запускаєте щось за рядками:

certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n "My Homemade CA" -i /path/to/CA/cert.file

Firefox дозволить вам переглядати сертифікат на диску, розпізнавати його файл сертифіката, а потім дозволяє імпортувати його до списку Root CA.

Більшість інших команд, таких як curlприймати перемикачі командного рядка, які можна використовувати для вказівки на ваш CA,

 curl --cacert  /path/to/CA/cert.file https://...

або взагалі скасувати перевірку SSL

 curl --insecure https://...

Решті знадобиться індивідуальне дослідження, якщо ca-certificatesподібний трюк не сортуватиме його саме для цієї програми.


Також, як зазначалося тут , додавання сертифікатів CA для Java також є окремою справою.
Naftuli Kay

2
Після копіювання сертифіката в / usr / share / ca-сертифікати я не можу побачити його у dpkg-reconfigure ca-certificatesсписку. Що я роблю неправильно?
Жорж Дуперон

18
@ GeorgesDupéron Це сталося зі мною. Я вирішив це шляхом перейменування cert від whatever.pemна whatever.crt.
Hello World


2
FYI, у мене був файл cert з іменем .cer, і це не спрацювало. Мені довелося перейменувати це, щоб .crtвоно було визнане.
Tri Nguyen

53

Неінтерактивний підхід

Для використання в неінтерактивному контексті (наприклад, рецепт шеф-кухаря) ви можете використовувати наступну послідовність.

sudo cp my.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
  • Тестується та працює на debian 5/6 та Ubuntu 14.04.
  • Для отримання додаткової інформації див man update-ca-certificates

Цей спосіб є кращим над методом @ Drav, оскільки /usr/share/зазвичай зарезервований для файлів, доданих ОС / apt-get.


4
Краще скопіювати файли, /usr/local/share/ca-certificates/як зазначено на сторінках man
ortang

3
FYI A повинен бути a .crt, я виявив, .certщо це було додано, але це не допомогло
KCD

6

У Fedora 23 додайте файл .pem або .der до /etc/pki/ca-trust/source/anchors/та запустіть sudo update-ca-trust extract.

Детальні man update-ca-trustвідомості див., Наприклад, використовувати / etc або / usr.


4

У центсах:

cp *.pem /etc/pki/ca-trust/source/anchors/
update-ca-trust extract

Коли я openssl connectповинен робити, я повинен вказувати цю папку / якоря? Я все ще отримую помилку "self signed certs
Janac Meena

2

Неінтерактивний підхід (жовт. 18)
для останніх систем на базі debian

Існує відмінність між додаванням сертифікату до магазину хоста та його активацією, щоб додатки справді використовували ці програми. Існуючий сертифікат у магазині не обов'язково використовується (хоча я мушу визнати, що все-таки багато пакунків все-таки помиляються)
Це може заплутатися, коли ви встановлюєте пакет, який враховує /etc/ca-certificate.confта просто відмовляється використовувати ваш серт, хоча він має додано без помилок. Вам потрібно update-ca-certificatesчітко сказати (не просто копіювати, а) активувати cert, додавши його до /etc/ca-certificate.confабо /etc/ca-certificate/update.d.

CERT=mycert.crt
cp /mypath/to/$CERT /usr/share/ca-certificates/$CERT
    # notice the + sign which tells to activate the cert!!!
echo "+$CERT" >/etc/ca-certificates/update.d/activate_my_cert
dpkg-reconfigure ca-certificates;

Тепер це стає заплутаним, оскільки існує спосіб неявного довіри до сертифіката за допомогою іншого шляху:

CERT=mycert.crt
cp /mypath/to/$CERT /usr/local/share/ca-certificates/$CERT
update-ca-certificates;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.