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


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

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

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

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


133
2018-06-15 16:14


Источник




Ответы:


Установка ЦС

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

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

Предостережения: Эта установка влияет только на продукты, которые используют это хранилище сертификатов. Некоторые продукты могут использовать другие хранилища сертификатов; если вы используете эти продукты, вам нужно будет добавить этот сертификат ЦС в эти другие хранилища сертификатов. (Инструкции Firefox, Инструкции Chrome, Инструкции Java)

Тестирование CA

Вы можете проверить, работает ли это, ища сертификат, который вы только что добавили в /etc/ssl/certs/ca-certificates.crt (это всего лишь длинный список всех ваших доверенных CA, соединенных вместе).

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

$ 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)

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

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


175
2018-02-19 19:13



это действительно работает - Sabareesh Kkanan
Благодарим за внимание, что firefox / chrome не используют хранилище сертификатов по умолчанию. - shokora
Обратите внимание, что update-ca-сертификаты могут быть очень утонченными (возможно, по дизайну). mycert.pem.crt НЕ работал, но mycert.crt. Я также считаю, что он должен быть / usr / local / share / ca-cert, а не / usr / share / ca-certificates (несмотря на то, что комментарии указаны в файле /etc/ca-certificates.conf). - labyrinth
Спасибо за crt комментарий, это был секрет для получения этой работы для меня, мне дали сертификат с cert и было смущено, почему ничего не работает. - Ransom Briggs
Одно предостережение: s_client не отправляет SNI по умолчанию, и серверу может потребоваться SNI, особенно если он поддерживает виртуальные хосты / сайты с разными сертификатами; для этого случая добавьте -servername foo.whatever.com, Или, если это Web использование сервера (современные версии) curl или wget которые выполняют SNI автоматически. - dave_thompson_085


man update-ca-certificate:

update-ca-certificates  is  a  program  that  updates   the   directory
/etc/ssl/certs to hold SSL certificates and generates 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.

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

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


56
2018-06-15 18:07



Именовать сертификаты с расширениями .crt, казалось, также требовалось. - phyzome
Спасибо за примечание @phyzome - не смог бы добавить мой сертификат в противном случае. - Seiyria


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

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


15
2018-04-30 13:39



openssl x509 -inform DER -in certificate.cer -out certificate.crt - webwurst


Другие ответы, касающиеся 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 <имя сертификата> -i <имя файла сертификата>

где <certificate nickname> произвольно и <certificate filename> это ваш .pem или .crt файл.

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


12
2017-10-10 18:46



Благодарю. Он работает на Ubuntu 16.04 для Chrome 53.0.2785.143, но Firefox 49, похоже, имеет отдельный db хранилища и должен быть добавлен примерно из: предпочтения # advanced [View Certiticates] -> [Authorities] -> [Import] Подробнее о магазине firefox cert. askubuntu.com/a/248326/535154 - mauron85
Кстати, если вы хотите установить сертификат до первый запуск Chrome (т. е. пока .pki / dir все еще отсутствует), вы должны сначала создать nssdb: mkdir -p $HOME/.pki/nssdb && chmod -R 0700 $HOME/.pki && certutil -d sql:$HOME/.pki/nssdb -N --empty-password - akavel
Существует способ заставить Chrome и Firefox читать из хранилища сертификатов системы. См. Мой ответ: superuser.com/a/1312419/506107 - wheeler


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

sudo dpkg-reconfigure ca-certificates

ПРИМЕЧАНИЕ. Sudo dpkg-reconfigure ca-Certific вызывает внутренние сертификаты update-ca-cert

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


8
2017-09-02 06:19





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

libnss3 по умолчанию поставляется с набором только для чтения корневых сертификатов CA (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 и он должен показать ссылку:

lrwxrwxrwx 1 root root 49 Apr  9 20:28 /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so -> /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so

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


1
2018-04-10 01:00





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

В других дистрибутивах, таких как Fedora, такие вещи Just Works и вы должны указывать ошибку в отношении любых приложений, которые автоматически не доверяют CA, которые вы устанавливаете с помощью update-ca-trust,

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

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

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


1
2017-12-12 12:36



Когда я сделал sudo find / -type f -name "libnssckbi.so", Он нашел libnssckbi.so в трех местах: /usr/lib/thunderbird/, /usr/lib/firefox/, а также /usr/lib/x86_64-linux-gnu/nss/, Итак, вы говорите, что я должен связать libnssckbi.so во всех трех этих папках p11-kit-trust.so? - wheeler
Хорошо, просто подтвердил, что ссылка /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so -> /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so работал как CHARM. Я смог добавить сертификат в /usr/local/share/ca-certificates, бег sudo update-ca-certificates, и PRESTO, Chrome начал принимать самозаверяющие сертификаты. - wheeler