May 19

Установка корневого сертификата в Astra Linux

В данной статье рассмотрим, как установить корневой сертификат в системное хранилище доверенных корневых сертификатов. Здесь надо учесть, что браузеры после этого не станут автоматически доверять сайту, сертификат которого выпущен таким центром сертификации, потому что веб-браузеры в Linux используют свои собственные хранилища корневых сертификатов, поэтому будет затронута также тема добавления корневого сертификата в веб-браузеры. Инструкция подойдет не только для Astra Linux, но и для других Debian подобных дистрибутивов.

Установка корневого сертификата в системное хранилище

1. Сертификат должен иметь формат crt. Если формат сертификата отличается, необходимо выполнить его конвертацию. Так, например, для cer-сертификатов:

Если исходный сертификат имеет кодировку DER

openssl x509 -inform DER -in /path/certificate.cer -out certificate.crt

Если исходный сертификат имеет кодировку PEM

openssl x509 -inform PEM -in /path/certificate.cer -out certificate.crt

В параметре out можно сразу указать полный путь сохранения сертификата, в противном случае, он сохранится в текущий каталог.

2. Скопировать полученный сертификат в папку /usr/share/ca-certificates:

sudo cp /path/certificate.crt /usr/share/ca-certificates

вместо /path/certificate.crt подставить свой путь до сертификата и имя сертификата

Есть, однако, мнение, что сертификаты лучше копировать сюда: /usr/local/share/ca-certificates

3. Установить сертификат можно такой командой:

sudo dpkg-reconfigure ca-certificates

Выбрать «Да», нажать «ОК» (Enter), а в следующем окне отметить звездочками сертификаты, которые необходимо установить. При этом, если все успешно, вы должны увидеть информацию о добавлении вашего сертификата. В моем случае выполнялась установка сразу двух сертификатов (2 added)

Есть еще и вот такая команда:

sudo update-ca-certificates

По идее, делает все что нужно в автоматическом режиме.

По итогу, ваш сертификат должен будет находиться здесь: /etc/ssl/certs

Проверка установки

Способ 1

trust list

Короткая команда, которая выведет список доверенных сертификатов. В списке вы должны найти свой сертификат — значит он установился.

Способ 2

Для проверки есть такая конструкция:

awk -v cmd='openssl x509 -noout -subject' ' /BEGIN/{close(cmd)};{print | cmd}' < /etc/ssl/certs/ca-certificates.crt | grep -i СЕРТИФИКАТ

Вместо СЕРТИФИКАТ вводим критерий поиска (точное имя сертификата), можно часть имени заменить символом * (например, Digi*) — но в случае со «звездочкой» поиск будет чувствителен к регистру (игнорирует ключ -i), если в имени сертификата есть пробелы, то критерий поиска обязательно нужно взять в кавычки, даже при использовании маски поиска *.

Способ 3

openssl s_client -connect example.site.ru:443 -quiet

Проверка посредством выполнения подключения к сайту. То есть, здесь мы выполняем не поиск по хранилищу сертификатов, а осуществляем подключение к сайту

Вместо example.site.com вводите ваш сайт, на котором нужно проверить работу сертификата.

Если в результате вывода где-то есть verify error, значит есть проблемы с доверием. Нужно детально изучить вывод — на какой сертификат ругается.

Способ 4

curl https://example.site.com --cacert /etc/ssl/certs/ca-certificates.crt

Может потребоваться установка пакета curl. В ответе должен быть получен код страницы — значит все ОК, доверие к сертификату есть, в противном случае, получим ошибку.

Импорт сертификата в профиль пользователя для Chromium-подобных браузеров

Можно автоматизировать данный процесс. Для выполнения команды должна быть установлена утилита certutil.

certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n "certificate_name" -i certificate_file.crt
certificate_name — имя сертификата
certificate_file — имя файла сертификата, в примере подразумевается, что сертификат расположен в том же каталоге, что и скрипт

После выполнения данной команды, браузеры на Chromium движке под текущим пользователем будут доверять сертификату (Chrome, Chromium, Opera и т.п.).

Отдельно отмечу, что браузер Firefox использует собственную базу сертификатов, которая располагается в другом месте.

Те же самые действия можно проделать и через GUI браузера.

Настройки — Конфиденциальность и безопасность — Безопасность — Настроить сертификаты

Далее импортировать нужный сертификат в разделе «Центры сертификации»