2012-06-15 16:14:17 +0000 2012-06-15 16:14:17 +0000
186
186

Как добавить центр сертификации (CA) в Ubuntu?

Моя работа решила выпустить свой собственный центр сертификации (CA), чтобы безопасно работать с различными аспектами нашей работы, не платя за сертификаты.

  • Криптографическая подпись электронной почты
  • Шифрование содержимого электронной почты
  • Сделать доступ к таким вещам, как компания IRC клиент-сертификат на основе.
  • Отмена ключей бывших сотрудников автоматически

Они прислали мне файл .pem, и я не уверен, как добавить его в мою установку Ubuntu. Отправлены инструкции: _Двойной щелчок на нем на Mac должен установить его. _ 

Как мне действовать? Нужно ли мне что-то делать с помощью OpenSSL для создания файла .key, .csr или .crt?

Ответы (8)

253
253
253
2014-02-19 19:13:09 +0000

Установка CA

Скопируйте ваш сертификат в формат PEM (формат, в котором ----BEGIN CERTIFICATE----) в /usr/local/share/ca-certificates и назовите его имя с расширением .crt.

Затем запустите sudo update-ca-certificates.

Caveats: Эта установка затрагивает только те продукты, которые используют это хранилище сертификатов. Некоторые продукты могут использовать другие хранилища сертификатов; если вы используете эти продукты, вам нужно будет добавить этот сертификат CA в другие хранилища сертификатов. Firefox Instructions , Chrome Instructions , Java Instructions )

Testing The CA

Testing The CA

Testing The CA

Testing The CA

Testing The CA

Testing The CA

Testing The CA

Testing The CA

Testing The CA /etc/ssl/certs/ca-certificates.crt (это всего лишь длинный список всех ваших доверенных ЦС, объединенных вместе).

Можно также использовать OpenSSL’s s_client, пытаясь подключиться к серверу, который, как вы знаете, использует сертификат, подписанный только что установленным ЦС.

$ openssl s_client -connect foo.whatever.com:443 -CApath /etc/ssl/certs

CONNECTED(00000003)
depth=1 C = US, ST = Virginia, O = "Whatever, Inc.", CN = whatever.com, emailAddress = admin@whatever.com
verify return:1
depth=0 C = US, ST = Virginia, L = Arlington, O = "Whatever, Inc.", CN = foo.whatever.com
verify return:1
---
Certificate chain
 0 s:/C=US/ST=Virginia/L=Arlington/O=Whatever, Inc./CN=foo.whatever.com
   i:/C=US/ST=Virginia/O=Whatever, Inc./CN=whatever.com/emailAddress=admin@whatever.com

... snip lots of output ...

    Key-Arg : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1392837700
    Timeout : 300 (sec)
    Verify return code: 0 (ok)

Первое, что нужно искать, это цепочка сертификатов, расположенная в верхней части выходных данных. Здесь должно быть указано, что ЦС является издателем (рядом с i:). Это говорит вам о том, что сервер представляет сертификат, подписанный устанавливаемым ЦС.

Во-вторых, ищите verify return code в конце, чтобы установить 0 (ok).

69
69
69
2012-06-15 18:07:40 +0000

man update-ca-certificates :

update-ca-certificates is a program that updates the directory /etc/ssl/certs to hold SSL
certificates and generates ca-certificates.crt, a concatenated single-file list of
certificates.

It reads the file /etc/ca-certificates.conf. Each line gives a pathname of a CA
certificate under /usr/share/ca-certificates that should be trusted. Lines that begin
with "#" are comment lines and thus ignored. Lines that begin with "!" are deselected,
causing the deactivation of the CA certificate in question. Certificates must have a .crt
extension in order to be included by update-ca-certificates.

Furthermore all certificates with a .crt extension found below /usr/local/share/ca-
certificates are also included as implicitly trusted.

Из вышесказанного я бы сделал вывод, что предпочтительным способом получения локальных файлов сертификатов в доверенное хранилище является помещение их в /usr/local/share/ca-certificates, а затем запуск update-ca-certificates. Вам не нужно прикасаться к /etc/ssl/certs напрямую.

15
15
15
2013-10-10 18:46:49 +0000

Остальные ответы относительно update-ca-certificates верны для приложений, которые считывают из хранилища сертификатов системы. Для Chrome и Firefox, и, возможно, для некоторых других, сертификат должен быть помещен в nssdb, бэкэнд библиотеки Mozilla NSS.

Из https://code.google.com/p/chromium/wiki/LinuxCertManagement :

Например, чтобы доверять корневому ЦС сертификату для выдачи SSL сертификатов сервера, используйте

certutil -d sql:$HOME/. pki/nssdb -A -t “C,” -n <сертификат nickname> -i <сертификат filename>

Где <certificate nickname> - произвольный, а <certificate filename> - ваш .pem или .crt файл.

Другие полезные ссылки:

15
15
15
2014-04-30 13:39:09 +0000

У меня была та же проблема, и мне пришлось скопировать файл .pem в /usr/local/share/ca-certificates, переименовав его в .crt. Файл .cer можно легко преобразовать в .pem, с помощью openssl, например, если у вас нет .pem.

После копирования файла вы должны выполнить sudo update-ca-certificates.

11
11
11
2015-09-02 06:19:09 +0000

Для новых сборок, основанных на Debian, вам может понадобиться запустить:

sudo dpkg-reconfigure ca-certificates

NOTE: sudo dpkg-reconfigure ca-certificates вызывает update-ca-certificates internal

Вы, конечно, должны скопировать сертификат (.crt файл) в /usr/share/ca-certificates перед тем, как вы сделаете что-либо из этого :).

6
6
6
2018-04-10 01:00:50 +0000

Основываясь на dwmw2 answer , вы можете сказать приложениям, которые используют NSS для управления сертификатами, использовать системное хранилище доверия.

libnss3 по умолчанию поставляется с набором сертификатов корневого ЦС только для чтения (libnssckbi.so), поэтому большую часть времени вам нужно вручную добавлять их самостоятельно в локальное хранилище доверия пользователей, расположенное в $HOME/.pki/nssdb. p11-kit предлагает замену libnssckbi.so, которая действует как адаптер к общесистемным корневым сертификатам, установленным в /etc/ssl/certs.

Правка:

Похоже, что существует больше версий libnssckbi.so, чем только в libnss3. Ниже приведен скрипт, чтобы найти их все, создать их резервную копию и заменить ссылками на p11-kit:

sudo apt-get update && sudo apt-get install -y p11-kit libnss3
find / -type f -name "libnssckbi.so" 2>/dev/null | while read line; do
    sudo mv $line ${line}.bak
    sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so $line
done

Оригинальные инструкции:

Для этого установите p11-kit и libnss3 (если они еще не установлены):

sudo apt-get update && sudo apt-get install -y p11-kit libnss3

Затем создайте резервную копию существующей libnssckbi.so, предоставленной libnss3:

sudo mv /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so.bak

Наконец, создайте символическую ссылку:

sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so

Для подтверждения того, что она работает, можно запустить ll /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so, и на ней должна появиться ссылка:

Теперь, если вы добавите сертификат в хранилище CA с помощью update-ca-certificates, эти сертификаты теперь будут доступны для приложений, использующих NSS (libnss3), таких как Chrome.

3
3
3
2016-12-12 12:36:34 +0000

Как уже отмечалось, различные приложения, использующие NSS, имеют свой собственный магазин сертификатов. В Ubuntu, вы должны вручную использовать certutil, чтобы добавить ваши центры сертификации для каждого приложения, для каждого пользователя.

В других дистрибутивах, таких как Fedora, это просто работает ™ и вы должны поставить ошибку против любых приложений, которые не доверяют автоматически центры сертификации, которые вы устанавливаете с update-ca-trust.

Это можно исправить и в Ubuntu, установив пакет p11-kit-modules, а затем заменив NSS built-in trust roots module на p11-kit-trust.so, сделав символическую ссылку, например, с /usr/lib/firefox/libnssckbi.so на /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so

Тогда вы получите настроенные корни доверия системы, а не некоторые жестко закодированные. Обратите внимание, что Ubuntu поставляет несколько копий _different этой библиотеки libnssckbi.so с жестко закодированными корнями доверия, и вы должны заменить их все!

ср. https://bugs.launchpad.net/ubuntu/+source/nss/+bug/1647285

1
1
1
2018-01-02 12:58:09 +0000

Серьезно глупый ответ, чтобы добавить сюда, но я потратил 2 часа на то, чтобы ездить туда-сюда с цертутилами в Линуксе… Я был уверен, что все было правильно:

hutber@hutber-mint /var/www/asos-mvt-framework $ certutil -L -d sql:${HOME}/.pki/nssdb

Certificate Nickname Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

anyproxy CT,, 
rootCA CT,, 
myasos CT,,

Но, тем не менее, в хроме ничего не работало. Я все перепробовал, в конце концов…

Restarting Chrome

Был ключом к моему успеху после того, как я последовал за ним: Стивен Понедельник советы