Добавляем корневой доверенный сертификат в Linux

  • Михаил
  • 5 мин. на прочтение
  • 99
  • 16 Feb 2023
  • 16 Feb 2023

В этой статье мы покажем, как установить новый сертификат в список доверенных корневых сертификатов в Linux. Например, вы используете на своем сайте самоподписанный SSL/TLS сертификат и не хотите, чтобы на клиентах при открытии сайта появлялась ошибка SEC_ERROR_UNKNOWN_ISSUER. В данном примере мы установим в Linux корневой сертификат Минцифры (Russian Trusted Sub CA), на базе которого сейчас выпускаются сертификаты для сайтов многих компаний и государственных органов РФ.

Чтобы проверить, что ваш хост Linux не может проверить (и соответственно не доверяет) SSL сертификату на определенном сайте, выполните команду:

curl –I https://fgiscs.minstroyrf.ru/

В данном случае нам нужно добавить корневой центр сертификации этого сайта в список доверенных корневых сертификатов Linux.

 

Установка корневого сертификата в Linux
Для обновления хранилища доверенных сертификатов в Linux вам нужен файл сертификата в формате PEM с расширением файла .crt. PEM сертификат представляет собой текстовый файл в формате base64, который содержит в начале файла строку —-BEGIN CERTIFICATE—- и в конце ——END CERTIFICATE——.

Если ваш файл сертификата в формате DER, вы можете конвертировать его в PEM формат с помощью утилиты openssl:

openssl x509 -in my_trusted_sub_ca.der -inform der -out my_trusted_sub_ca.cer

Сначала рассмотрим, как добавит корневой сертификат вашего CA в доверенные в дистрибутивах Linux на базе DEB (Ubuntu, Debian, Mint, Kali Linux).

Скопируйте файлы ваших сертификаты в хранилище сертификатов в каталог usr/local/share/ca-certificates/:

sudo cp my_trusted_sub_ca.crt /usr/local/share/ca-certificates/
sudo cp my_trusted_root_ca.crt /usr/local/share/ca-certificates/

Обновите хранилище сертификатов командой:

sudo update-ca-certificates -v

Если команда не найдена, установите пакет в Ubuntu:

sudo apt-get install -y ca-certificates

обновить хранилище сертфикатов в linux

Если сертификаты успешно добавлены, появится сообщение о том, что сертфикат скопирован в /etc/ssl/certs/:

Updating certificates in /etc/ssl/certs…

2 added, 9 removed; done.

Running hooks in /etc/ca-certificates/update.d

Также вы можете добавить новые сертификаты в хранилище с помощью команды:

sudo dpkg-reconfigure ca-certificates

Выберите из списка сертификаты, которые нужно добавить в доверенные.

добавить сертификаты в доверенные CA в Linux

В Linux список доверенных сертификатов содержится в файле /etc/ssl/certs/ca-certificates.crt. Обе рассмотренные выше команды обновят этот файл и добавят в информацию о новых сертификатах.

Вы можете проверить, что ваши сертификаты были добавлены в доверенные с помощью команды:

awk -v cmd='openssl x509 -noout -subject' ' /BEGIN/{close(cmd)};{print | cmd}' < /etc/ssl/certs/ca-certificates.crt | grep -i YourCASubj

Укажите часть Common Name вашего сертификата вместо YourCASubj для поиска в хранилище по subject.

awk вывести доверенные сертификаты

Вы можете убедиться, что ваша ОС доверяет сертификату с помощью команду:

openssl verify my_trusted_sub_ca.crt
openssl verify - проверить доверяет ли linux сертификату

Если Linux не доверяет сертификату, появится ошибка:
error 20 at 0 depth lookup: unable to get local issuer certificate
error my_trusted_sub_ca.crt: verification failed


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

curl –I https://www.sberbank.ru

Все ок, сертификат доверенные { HTTPOnly: secure }.

curl проверка ssl сертификата secure

Можно также вручную добавить путь к сертификату:

sudo mkdir /usr/share/ca-certificates/extra
journal-tinkoff-ru.turbopages.org

Скучно, но важно: расскажем, как взломать взрослую жизнь

Узнать больше

sudo cp my.crt /usr/share/ca-certificates/extra/mycert1.crt
sudo vim /etc/ca-certificates.conf
exta/mycert1.crt
sudo update-ca-certificates

Чтобы удалить сертификат, удалите ваш crt файл:

sudo rm /usr/local/share/ca-certificates/yourcert.crt

И обновите хранилище:

sudo update-ca-certificates --fresh

В дистрибутивах Linux на базе RPM (CentOS, Oracle, RHEL, Rocky Linux, Fedora) 

Для добавления сертификата в доверенные установите пакет ca-certificates:

 yum install ca-certificates

Скопируйте файл сертификата в каталог /etc/pki/ca-trust/source/anchors/: # cp mycert.crt /etc/pki/ca-trust/source/anchors/

Обновите хранилище:

update-ca-trust force-enable
update-ca-trust extract

Добавить корневой доверенный сертификат для браузеров Mozilla, Chrome

Теперь все системные утилиты будут доверять сайтам, использующим данный CA. Но это не повлияет на веб браузеры Mozilla Firefox или Google Chrome. Они по-прежнему будут показывать предупреждение о недоваренном сертификате.

Дело в том, что браузеры Firefox, Chromium, Google Chrome, Vivaldi и даже почтовый клиент Mozilla Thunderbird не используют системное хранилище сертификатов Linux. Хранилище сертификатов для этих программ находится в директории пользователя в файле cert8.db (для Mozilla) или cert9.db (для Chromium и Chrome). Для обновления этих хранилищ сертификатов используется утилита certutil из пакета libnss3-tools.

Установите пакет:

sudo apt install libnss3-tools

Теперь выполните следующие скрипты для добавления ваших сертификатов в хранилище через NSS:

#!/bin/bash
certfile="my_rusted_root_ca.crt"
certname="My Root CA1"
for certDB in $(find ~/ -name "cert8.db")
do
certdir=$(dirname ${certDB});
certutil -A -n "${certname}" -t "TCu,Cu,Tu" -i ${certfile} -d dbm:${certdir}
done
for certDB in $(find ~/ -name "cert9.db")
do
certdir=$(dirname ${certDB});
certutil -A -n "${certname}" -t "TCu,Cu,Tu" -i ${certfile} -d sql:${certdir}
done

После запуска скрипта, сайтам с данным CA будут доверять все браузеры.