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

28.09.2022

itpro

CentOS, Linux, Ubuntu

комментария 4
В этой статье мы покажем, как добавить (установить) новый сертификат в список доверенных корневых сертификатов в Linux.
Например, вы используете на своем сайте самоподписанный SSL/TLS сертификат и не хотите, чтобы на клиентах при открытии сайта появлялась ошибка SEC_ERROR_UNKNOWN_ISSUER.

В данном примере мы установим в Linux корневой сертификат Минцифры (Russian Trusted Sub CA), на базе которого сейчас выпускаются сертификаты для сайтов многих компаний и гос-органов РФ.
Или это может быть самоподписанный сертификат с сайта IIS на Windows.
Чтобы проверить, что ваш хост Linux не может проверить (и соответственно не доверяет) SSL сертификату на определенном сайте, выполните команду:
$ curl –I https://www.sberbank.ru
curl: (60) SSL certificate problem: unable to get local issuer certificate. More details here: https://curl.haxx.se/docs/sslcerts.html curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above.

В данном случае нам нужно добавить корневой центр сертификации этого сайта в список доверенных корневых сертификатов 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

Если сертификаты успешно добавлены, появится сообщение о том, что сертфикат скопирован в /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
Выберите из списка сертификаты, которые нужно добавить в доверенные.

В Linux список доверенных сертификатов содержится в файле /etc/ssl/certs/ca-certificates.crt. Обе рассмотренные выше команды обновят этот файл и добавят в информацию о новых сертификатах.
Вы можете проверить, что ваши сертификаты были добавлены в доверенные с помощью команды:
Укажите часть Common Name вашего сертификата вместо YourCASubj для поиска в хранилище по subject.

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

Если 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 >.

Можно также вручную добавить путь к сертификату:
$ sudo mkdir /usr/share/ca-certificates/extra
$ sudo cp my.crt /usr/share/ca-certificates/extra/mycert1.crt
$ sudo vim /etc/ca-certificates.conf
exta/mycert1.crt
Чтобы удалить сертификат, удалите ваш 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
Аналогичная статья по управлению хранилищем корневых доверенных сертификатов в Windows.
Добавить корневой доверенный сертификат для браузеров 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 $);
certutil -A -n «$» -t «TCu,Cu,Tu» -i $ -d dbm:$
done
for certDB in $(find ~/ -name «cert9.db»)
do
certdir=$(dirname $);
certutil -A -n «$» -t «TCu,Cu,Tu» -i $ -d sql:$
done
После запуска скрипта, сайтам с данным CA будут доверять все браузеры.
Предыдущая статья Следующая статья
Сертификаты
Одной из наиболее распространенных форм криптографии сегодня является криптография на открытых ключах. Криптография на открытых ключах использует открытый (public) и закрытый (secret) ключи. Система выполняет шифрование с использованием открытого ключа. Расшифрована такая информация может быть только с использованием закрытого ключа.
Обычное использование криптографии на открытых ключах — шифрование трафика приложений с использованием соединений по протоколам SSL и TLS. Например, настройка Apache для предоставления HTTPS, протокола HTTP поверх SSL . Это позволяет применить шифрование трафика с протоколом, который сам по себе шифрование не поддерживает.
Сертификат — это метод, используемый для распространения открытого ключа и другой информации о сервере и организации, ответственной за него. Сертификаты могут иметь цифровую подпись, сделанную Центром сертификации или CA. CA — это третья сторона, которая подтверждает, что информация, содержащаяся в сертификате, верна.
Типы сертификатов
Для установки безопасного сервера с использованием криптографии на открытых ключах в большинстве случаев вы посылаете свой запрос на сертификат (включающий ваш открытый ключ), подтверждение идентичности вашей компании и оплату центру сертификации. Центр проверяет запрос на сертификат и вашу идентичность, и затем отсылает в ответ сертификат для вашего сервера. В качестве альтернативы вы можете использовать самоподписанный сертификат.
Обратите внимание, что самоподписанный сертификат не может быть использованным в большинстве производственных сред.
Продолжая пример с HTTPS, сертификат, подписанный CA, предоставляет два важных свойства в отличие от самоподписанного сертификата:
Браузеры (обычно) автоматически распознают такой сертификат и позволяют устанавливать защищенные соединения без предупреждения пользователя.
Когда CA выпускает подписанный сертификат, он гарантирует идентичность организации, которая предоставляет интернет страницы браузеру.
Большинство интернет браузеров и компьютеров, которые поддерживают SSL имеют список центров сертификации, чьи сертификаты они автоматически принимают. Если браузер встречает сертификат, чей заверяющий центр не попал в этот список, он запрашивает пользователя на подтверждение или запрет соединения. При этом другие приложения могут выдавать сообщения об ошибке, когда используется самоподписанный сертификат.
Процесс получения сертификата из CA довольно прост. Короткий обзор его приведен ниже:
Создайте пару из открытого и закрытого ключей.
Создайте запрос на сертификат на основе открытого ключа. Запрос на сертификат содержит информацию о вашем сервере и управляющей им компании.
Пошлите запрос на сертификат вместе с документами, подтверждающими вашу идентичность, в CA. Мы не можем сказать вам какой центр сертификации выбрать. Ваше решение может основываться на вашем прошлом опыте, опыте ваших друзей и коллег или исключительно на факторе цены. Как только вы определитесь с CA, вам надо следовать их инструкциям по тому, как получить у них сертификат.
Когда центр убедится, что вы действительно тот, за кого себя выдаете, они отправят вам цифровой сертификат.
Установите это сертификат на ваш защищенный сервер и настройте соответствующие приложения на его использование.
Создание запроса на подпись сертификата (CSR)
Вне зависимости от того получаете ли вы сертификат от CA или создаете самоподписаный, первым шагом будет создание ключа.
Если сертификат будет использоваться системными сервисами такими, как Apache, Postfix, Dovecot и т.п., уместно создать ключ без пароля. Отсутствие пароля позволяет сервису стартовать с минимальным ручным вмешательством, обычно это предпочтительный вариант запуска сервиса.
В этой секции показано как создать ключ с кодовым словом (паролем) и без него. Беспарольный ключ затем будет использован для создания сертификата, который можно использовать для различных системных сервисов.
Запуск вашего защищенного сервиса без кодовой фразы удобен потому, что вам не потребуется вводить ее при каждом старте данного сервиса. Однако это небезопасно и компрометация ключа будет означать и компрометацию сервера.
Для генерации ключей CSR запроса, запустите следующую команду из терминала:
openssl genrsa -des3 -out server.key 2048
Generating RSA private key, 2048 bit long modulus . ++++++ . ++++++ e is 65537 (0x10001) Enter pass phrase for server.key:
Теперь вы можете ввести вашу кодовую фразу. Для лучшей безопасности рекомендуется использовать не менее восьми символов. Минимальная длина при использовании -des3 — 4 символа. Фраза должна включать цифры и/или знаки препинания и не должно быть словом из словаря. Также не забывайте, что ваша фраза будет чувствительна к регистру.
Повторите ввод для проверки. В случае корректного ввода ключ сервера будет создан и записан в файл server.key.
Теперь создадим небезопасный ключ, без кодовой фразы и поменяем имена ключей:
openssl rsa -in server.key -out server.key.insecure mv server.key server.key.secure mv server.key.insecure server.key
Небезопасный ключ теперь называется server.key и вы можете использовать его для создания CSR без кодовой фразы.
Для создания CSR выполните следующую команду в терминале:
openssl req -new -key server.key -out server.csr
У вас будет запрошена кодовая фраза (при использовании ключа с паролем — прим. пер.). Если введена корректная фраза, у вас запросят название компании, имя сайта, email и пр. Как только вы введете все эти подробности, будет создан запрос CSR и сохранен в файл server.csr.
Теперь вы можете оправить CSR файл в центр сертификации для обработки. CA использует этот файл для выпуска сертификата. С другой стороны, вы можете создать и самозаверенный сертификат, используя этот же CSR.
Создание самоподписанного сертификата
Для создания самоподписанного сертификата, запустите следующую команду в терминале:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Эта команда попросит вас ввести кодовую фразу. Как только вы введете корректную фразу, ваш сертификат будет создан и сохранен в файл server.crt.
Если ваш защищенный сервер будет использован в производстве, вам, возможно, потребуется сертификат, подписанный центром сертификации. В этом случае использование самоподписанных сертификатов не рекомендуется.
Установка сертификата
Вы можете установить файлы ключа server.key и сертификата server.crt (или файл сертификата, выданный вашим CA), запуском следующих команд в терминале:
sudo cp server.crt /etc/ssl/certs sudo cp server.key /etc/ssl/private
Теперь просто настройте любое приложение с возможностью использования криптографии на открытых ключах для использования этих файлов ключа и сертификата. Например, Apache может предоставить HTTPS, Dovecot предоставляет IMAPS и POP3S, и т.д.
Центр сертификации
Если сервисы вашей сети требуют больше чем самозаверенные сертификаты, может быть полезным дополнительное усилие по установке вашего собственного внутреннего центра сертификации (CA). Использование сертификатов, подписанных вашим центром, позволяют различным сервисам использовать сертификаты для простого доверия другим сервисам, использующих сертификаты, выданные тем же CA.
1. Сначала создайте каталоги для хранения сертификата CA и необходимых файлов:
sudo mkdir /etc/ssl/CA sudo mkdir /etc/ssl/newcerts
2. Центр сертификации требует несколько дополнительных файлов для своей работы; один для хранения последнего серийного номера, использованного CA, другой для записи какие сертификаты были выпущены:
sudo sh -c "echo '01' > /etc/ssl/CA/serial" sudo touch /etc/ssl/CA/index.txt
3. Третий файл — это файл настроек CA. Хотя он не строго обязателен, но очень удобен для выпуска множества сертификатов. Отредактируйте /etc/ssl/openssl.cnf, изменив секцию [ CA_default ]:
dir = /etc/ssl/ # Where everything is kept database = $dir/CA/index.txt # database index file. certificate = $dir/certs/cacert.pem # The CA certificate serial = $dir/CA/serial # The current serial number private_key = $dir/private/cakey.pem# The private key
4. Далее создайте самоподписанный сертификат:
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650
Вам будут заданы вопросы по деталям сертификата.
5. Теперь установим корневой сертификат и ключ:
sudo mv cakey.pem /etc/ssl/private/ sudo mv cacert.pem /etc/ssl/certs/
6. Теперь вы готовы приступить к выпуску сертификатов. Первое, что вам потребуется — запрос на сертификат (CSR). Смотрите детали в разделе Создание запроса на подпись сертификата (CSR). Получив CSR, введите следующую команду для создания сертификата, подписанного нашим центром:
sudo openssl ca -in server.csr -config /etc/ssl/openssl.cnf
После ввода пароля для ключа CA у вас запросят подтверждение на подпись сертификата и еще одно на сохранение нового сертификата. Затем вы сможете увидеть нечто с объемным выводом, относящееся к созданию сертификата.
7. Теперь у вас должен появиться новый файл /etc/ssl/newcerts/01.pem, с таким же содержанием, что и в предыдущем выводе. Выделите и скопируйте все, начиная со строки ——BEGIN CERTIFICATE—— и до строки ——END CERTIFICATE—— в файл с названием по сетевому имени сервера, где он будет установлен. Например, mail.example.com.crt — вполне хорошее описательное имя.
Последующие сертификаты будут иметь имена 02.pem, 03.pem и т.д.
Замените mail.example.com.crt на ваше собственное описательное имя.
8. Наконец, скопируйте новый сертификат на компьютер, для которого он выпущен, и настройте соответствующие приложения на его использование. Место по умолчанию для установки сертификатов — каталог /etc/ssl/certs. Это позволяет многим сервисам использовать один и тот же сертификат без чрезмерного усложнения прав доступа к файлу.
Для приложений, которые могут быть настроены на использование сертификата CA, вы можете скопировать файл /etc/ssl/certs/cacert.pem в каталог /etc/ssl/certs/ на каждом сервере.
Ссылки
Для более детальных инструкций по использованию криптографии смотрите SSL Certificates HOWTO на tlpd.org.
Записки IT специалиста
Установка российских корневых сертификатов в Debian и Ubuntu
- Автор: Уваров А.С.
- 24.10.2022
Начиная с сентября 2022 года многие российские сервисы начинают переходить на TLS-сертификаты, выпущенные российским удостоверяющим центром. В связи с чем пользователи могут испытывать проблемы при доступе к таким сайтам. Чтобы этого избежать, нам потребуется установить в систему корневые сертификаты удостоверяющего центра, что позволит системе и браузерам доверять выпущенным им сертификатам. В данной статье мы расскажем, как это сделать в среде операционных систем Ubuntu или Debian, а также в любых основанных на них дистрибутивах.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Сразу развеем некоторые досужие домыслы, что мол установка такого сертификата дает возможность перехватывать и расшифровывать весь пользовательский трафик с ПК. Ничего подобного, корневой сертификат только лишь позволяет проверить подлинность выпушенных этим удостоверяющим центром сертификатов, чтобы расшифровать трафик нам потребуется закрытый ключ владельца сертификата, который хранится у него локально и никто, включая удостоверяющий центр, доступа к нему не имеет.
Кроме того, современные алгоритмы шифрования используют одноразовые сеансовые ключи, формируемые с использованием протокола Диффи — Хеллмана, что не позволяет расшифровать сессию даже имея на руках закрытый ключ. Поэтому беспокоиться не стоит, это просто один из множества корневых сертификатов, установленных в вашей системе. Просто большинство из них входит в состав ОС и при этом регулярно обновляется, просто этот процесс скрыт от глаз пользователя.
Установка сертификатов в системное хранилище
Прежде всего скачаем сами сертификаты, для этого перейдем в домашнюю директорию:
И выполним команды:
wget https://gu-st.ru/content/lending/russian_trusted_root_ca_pem.crt
wget https://gu-st.ru/content/lending/russian_trusted_sub_ca_pem.crt
Это официальные ссылки для скачивания сертификатов с портала Госуслуг.
Затем повысим права до суперпользователя:
sudo -s
В Debian, если не установлен sudo, используйте:
Затем создадим директорию:
mkdir /usr/local/share/ca-certificates/russian_trusted
И скопируем в нее сертификаты:
cp russian_trusted_root_ca_pem.crt russian_trusted_sub_ca_pem.crt /usr/local/share/ca-certificates/russian_trusted
Затем установим их командой:
update-ca-certificates -v
Ключ -v указывает вывести на экран подробности выполнения команды. В выводе можно увидеть, что нужные сертификаты были установлены.
![]()
Теперь можем проверить, что система доверяет сертификатам выпущенным данным УЦ, для этого попробуем соединиться с сайтом Сбербанка, который одним из первых перешел на отечественные сертификаты:
wget -qS --spider --max-redirect=0 https://www.sberbank.ru
Если вы увидите следующий вывод, то все в порядке:
![]()
Часть строки HttpOnly; secure указывает на то, что мы успешно установили защищенное соединение с сайтом.
Установка сертификатов в Mozilla Firefox
Браузер Mozilla Firefox не использует системное хранилище сертификатов, поэтому если мы хотим работать с такими сайтами с его помощью, то нам нужно добавить сертификат в хранилище браузера. Для этого перейдите Настройки — Приватность и защита — Сертификаты — Просмотр сертификатов и на закладке Центры сертификации выполните импорт скачанных сертификатов.
![]()
Теперь проблем в этом браузере не возникнет, для проверки посетим тот же сайт Сбербанка.
![]()
На приведенном скриншоте видно, что сайт действительно использует сертификат от Минцифры, также обратите внимание на аббревиатуру ECDHE ниже, которая обозначает, что используются несохраняемые одноразовые сеансовые ключи на основе протокола Диффи-Хеллмана на эллиптических кривых.
Установка сертификатов в Chromium и основанные на нем браузеры
Также, как и Firefoх, Chromium и основанные на нем браузеры не используют системное хранилище и требуют отдельной установки сертификатов. Мы будем рассматривать установку на примере Chromium, в других браузерах путь к настройкам может отличаться. Переходим в Настройки — Конфиденциальность и безопасность — Безопасность — Настроить сертификаты. Затем на закладке Центры сертификации производим импорт сертификатов.
![]()
Затем точно также можем посетить сайт Сбербанка и убедиться, что сертификаты установлены успешно.
![]()
Как видим, установить российские корневые сертификаты в Linux достаточно несложно. При этом вам не обязательно устанавливать их во все хранилища, можно обойтись только необходимыми, исходя из рабочих потребностей.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
![]()
![]()
Или подпишись на наш Телеграм-канал:
Установка сертификатов в Ubuntu
Сертификаты SSL используются для обеспечения безопасности в различных сферах. Самая распространенная — это просмотр веб-сайтов по протоколу HTTPS. Существует небольшое количество доверенных корневых сертификатов организаций, которые подписывают остальные сертификаты для всех сайтов. Эти доверенные сертификаты хранятся на каждом компьютере или смартфоне. И именно исходя из этого веб-браузер может понимать, что тому или иному сайту можно доверять.
Но если вы попытаетесь создать свой корневой сертификат и подписать им сертификат для своего сайта, то увидите в браузере сообщение о том, что подключение не безопасно потому что используется сертификат, которого нет в списке доверенных. Аналогично будут работать и другие программы. Но вы можете добавить свой сертификат в список доверенных в своей системе. В этой статье мы рассмотрим как установить сертификат в Ubuntu.
Что нам понадобится?
Я хочу показать на примере как сделать сертификат доверенным в Ubuntu. Для этого можно создать свой центр сертификации CA с помощью EasyRSA, создать и подписать SSL сертификат, как это описано в статье про создание сертификатов OpenSSL. Далее использовать этот сертификат для домена localhost в Apache. Таким образом у вас получится три файла:
- ca.crt — корневой сертификат центра сертификации;
- localhost.crt — сертификат сайта подписанный центром сертификации;
- localhost.key — ключ сертификата сайта.
Активируйте файл виртуального хоста Apache для сайта по умолчанию с помощью такой команды:
sudo a2ensite default-ssl
Далее откройте этот файл и найдите такие строки:
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
Для параметра SSLCertificateFile надо передать путь к сертификату сайта, например, localhost.crt, а для SSLCertificateKeyFile — ключу сертификата сайта. Например, localhost.key. Если сертификаты находятся в папке /etc/apache/ssl, то конфигуация будет выглядеть вот так:
SSLCertificateFile /etc/apache/ssl/localhost.crt
SSLCertificateKeyFile /etc/apache/ssl/localhost.key
После этого нужно перезапустить Apache:
sudo systemctl restart apache2
Теперь у вас всё готово для того чтобы выполнить всё описанное ниже в своей системе.
Установка сертификатов в Ubuntu
1. Установка в системе
Если вы попытаетесь использовать подписанные вами сертификаты для включения поддержки HTTPS на веб-сервере, а потом откроете такой веб-сайт с помощью браузера или сделаете к нему запрос в командной строке, то получите ошибку SSL, в которой будет сказано, что этот сертификат не является доверенным и подключение к этому сайту может быть не безопасно.
curl -I https://localhost

Для того чтобы сертификат считался доверенным в системе нужно добавить корневой сертификат центра сертификации, с помощью которого он был подписан в список доверенных. Если это самоподписанный сертификат, то в список доверенных можно добавлять его самого.
И так, у вас есть сертификат ca.crt. Для того чтобы система считала его доверенным, нужно скопировать его в папку /usr/local/share/ca-certificates:
cp ./ca.crt /usr/local/share/ca-certificates/losstca.crt
После этого необходимо выполнить такую команду:

После этого можно проверить что система воспринимает сертификат как доверенный выполнив команду curl:

Но этот способ будет работать только для тех программ, которые используют системное хранилище доверенных сертификатов. Веб-браузеры, такие как Firefox и Google Chrome имеют собственные хранилища сертификатов и не используют хранилище системы, поэтому в каждом браузере нужно импортировать сертификаты отдельно. Иначе вы будете получать такую ошибку:

Chrome, Firefox, Thunderbird используют nssdb для работы с сертификатами. Это значит что вы можете импортировать сертификаты как в графическом интерфейсе браузера, так и в терминале, с помощью утилиты certutil. Давайте рассмотрим как это сделать. Давайте рассмотрим как выполняется установка сертификата в Ubuntu.
2. Установка в Google Chrome
Для того чтобы добавить сертификат в Google Chrome или Chromium в графическом интерфейсе откройте настройки из главного меню:

Перейдите в Конфиденциальность и безопасность -> Безопасность -> Настроить сертификаты:

В открывшемся окне перейдите на вкладку Центры сертификации:

Здесь необходимо нажать кнопку Импорт и выбрать файл корневого сертификата:

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

После этого сертификат будет добавлен и вы больше не будете видеть информацию о том, что подключение не безопасное.

В командной строке всё тоже довольно просто. Для работы с сертификатами вам понадобится пакет libnss3-tools, установите его с помощью команды:
sudo apt install libnss3-tools
База данных сертификатов Google Chrome находится в папке ~/.pki/nssdb. Вы можете посмотреть доступные сертификаты командой:
certutil -d ~/.pki/nssdb -L
Синтаксис команды для добавления сертификата следующий:
$ certutil -d путь/к/базе/данных -A -t «настройки_доверия» -n «имя» -i «/путь/к/файлу»
Обратите внимание на настройки доверия. Существует три группы атрибутов доверия:
- Для SSL;
- Для Email;
- Для программного обеспечения и других объектов.
Каждая из групп может содержать такие атрибуты:
- p — валидный пир;
- P — доверенный пир;
- c — валидный центр сертификации;
- C — доверенный центр сертификации;
- T — доверенный центр сертификации для авторизации клиентов.
Для SSL сертификатов можно достаточно такой последовательности «TC,,». То есть атрибуты T и C для SSL и ничего для всего остального. Вся команда для импорта ca.crt будет выглядеть вот так:
certutil -d sql:~/.pki/nssdb -A -t «TC,,» -n «Losst CA» -i ./ca.crt
После этого вы снова можете посмотреть список сертификатов для того чтобы убедится что всё хорошо:
certutil -d sql:~/.pki/nssdb -L

Сертификат есть и после этого браузер будет считать его доверенным. Сертификаты добавленные в графическом интерфейсе тоже добавляются сюда. Теперь вы знаете как выполняется установка корневых сертификатов Ubuntu.
3. Установка в Firefox
В Firefox всё немного сложнее. Тут нет централизованного хранилища сертификатов, а поэтому их придется добавлять для каждого профиля отдельно, что в графическом интерфейсе, что в командной строке. Для того чтобы добавить сертификат в графическом интерфейсе откройте Настройки в главном меню:

Далее перейдите в раздел Защита и безопасность и найдите там пункт Сертификаты. Здесь надо нажать кнопку Посмотреть сертификаты:

В открывшемся окне перейдите на вкладку Центры сертификации и нажмите кнопку Импортировать, для того чтобы добавить свой сертификат. Далее выберите файл сертификата и установить настройки доверия. Нужно отметить как минимум первую галочку — Доверять при идентификации веб-сайтов:

На этом установка SSL сертификата в Firefox завершена. Если вы хотите добавить сертификат в командной строке, то необходимо добавить его во все профили. Профили находятся в папке ~/.mozilla/firefox/. В данном примере, есть два профиля и только один из них заполнен:

Файлы nssdb находятся прямо в папке профиля, поэтому можно просто передать эту папку в certutil. Например, для просмотра списка сертификатов выполните:
certutil -d ~/.mozilla/firefox/k9z8sttc.default-release/ -L

Для добавления сертификата используйте такую команду подставив свой путь к папке профиля:
certutil -d ~/.mozilla/firefox/k9z8sttc.default-release/ -A -t «TC,,» -n «Losst» -i ./ca.crt
После этого полученный сертификат появится в списке.

Обратите внимание, что такой способ работает для Firefox, установленного как .deb пакет. Если у вас Firefox, установленный с помощью пакетного менеджера snap, то этот метод может не работать.
Для Firefox есть ещё один способ добавить сертификаты из системы автоматически без использования certutil. Это загрузка сертификатов с помощью политики. Возможно вы слышали про опцию security.enterprise_roots.enabled в about:config. Она работает только в Windows и MacOS но не в Linux. Однако, можно создать файл политики папке /usr/lib/firefox/distribution/ и там прописать какие сертификаты следует загрузить. По умолчанию Firefox будет искать сертификаты таких каталогах:
- /usr/lib/mozilla/certificates
- /usr/lib64/mozilla/certificates
- ~/.mozilla/certificates
В самом файле надо указать имена файлов сертификатов если они находятся в одной из этих папок или полный путь к ним. Например, скопируйте сертификат CA в папку /usr/lib/mozilla/certificates:
cp ~/easy-rsa-ca/ca.crt /usr/lib/mozilla/certificates/losst.crt
Поддерживаются как ASCII сертификаты (CRT/PEM), так и двоичные (DER). Затем создайте файл политики со следующем содержимым:
sudo vi /usr/lib/firefox/distribution/policies.json

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