Installing a root CA certificate in the trust store
Enterprise environments sometimes have a local Certificate Authority (CA) that issues certificates for use within the organization. For an Ubuntu server to be functional and trust the hosts in this environment this CA must be installed in Ubuntu’s trust store.
How to recognize the form (PEM or DER)?
To install a certificate in the trust store it must be in PEM form. A PEM-formatted certificate is human-readable in base64 format, and starts with the lines —-BEGIN CERTIFICATE—- . If you see these lines, you’re ready to install. If not, it is most likely a DER certificate and needs to be converted.
Installing a certificate in PEM form
Assuming a PEM-formatted root CA certificate is in local-ca.crt , follow the steps below to install it.
Note: It is important to have the .crt extension on the file, otherwise it will not be processed.
After this point you can use Ubuntu’s tools like curl and wget to connect to local sites.
Converting from DER-form to PEM-form
Convert a DER-formatted certificate called local-ca.der to PEM form like this:
$ sudo openssl x509 -inform der -outform pem -in local-ca.der -out local-ca.crt
The CA trust store location
The CA trust store as generated by update-ca-certificates is available at the following locations:
Установка сертификатов используя КриптоПРО в Linux
Описание процесса установки приведено на примере дистрибутива семейства Debian (x64).
Названия файлов и директорий могут варьироваться от системы к системе.
При установке личных сертификатов не нужны права суперпользователя, и наоборот, при установке сертификатов УЦ(корневых и промежуточных) могут потребоваться такие права.
Подключите USB носитель с ключевыми контейнерами и проверьте результат команды:
Можно сразу установить личные сертификатов из всех доступных контейнеров одной командой:
/opt/cprocsp/bin/amd64/csptestf -absorb -certs
Произойдет установка сертификатов, находящихся во всех доступных в момент запуска команды контейнерах (съемных флэш-носителях, жесткого диска и т. д.) в хранилище uMy.
Пример установки отдельно взятого сертификата из контейнера
При необходимости скопируйте ключевой контейнер \\.\FLASH\.\sidorov на жесткий диск:
Наличие [ErrorCode: 0x00000000] в завершении каждой команды КриптоПРО говорит о ее успешном выполнении.
Проверьте наличие нового контейнера \\.\HDIMAGE\sidor :
Установите личный сертификат:
Скачайте корневой сертификат по ссылке выше (из поля CA cert URL ): http://cert1.ucestp.ru/estp.crt и перенесите его, например, в домашнюю папку:
Установите корневой сертификат (возможно потребуются права суперпользователя):
Установка сертификатов в 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 путь/к/базе/данных -A -t «настройки_доверия» -n «имя» -i «/путь/к/файлу»
Обратите внимание на настройки доверия. Существует три группы атрибутов доверия:
- Для SSL;
- Для Email;
- Для программного обеспечения и других объектов.
Каждая из групп может содержать такие атрибуты:
- p — валидный пир;
- P — доверенный пир;
- c — валидный центр сертификации;
- C — доверенный центр сертификации;
- T — доверенный центр сертификации для авторизации клиентов.
Для SSL сертификатов можно достаточно такой последовательности «TC,,». То есть атрибуты T и C для SSL и ничего для всего остального. Вся команда для импорта ca.crt будет выглядеть вот так:
/.pki/nssdb -A -t «TC,,» -n «Losst CA» -i ./ca.crt
После этого вы снова можете посмотреть список сертификатов для того чтобы убедится что всё хорошо:

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

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

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

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

Файлы nssdb находятся прямо в папке профиля, поэтому можно просто передать эту папку в certutil. Например, для просмотра списка сертификатов выполните:

Для добавления сертификата используйте такую команду подставив свой путь к папке профиля:
/.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
В самом файле надо указать имена файлов сертификатов если они находятся в одной из этих папок или полный путь к ним. Например, скопируйте сертификат CA в папку /usr/lib/mozilla/certificates:
Поддерживаются как ASCII сертификаты (CRT/PEM), так и двоичные (DER). Затем создайте файл политики со следующем содержимым:
sudo vi /usr/lib/firefox/distribution/policies.json

Перезапустите браузер и после этого Firefox должен начать видеть ваш сертификат.
Выводы
В этой статье мы рассмотрели как установить сертификаты в Ubuntu, а также как добавить их в самые популярные браузеры. Как видите, универсального решения, не существует, но всё можно настроить.
Как добавить сертификат Центра Сертификации (CA) в доверенные в Linux
Как добавить корневой сертификат в доверенные в Linux на уровне системы
Сертификат с расширением .crt можно открыть двойным кликом и просмотреть его содержимое:
Если вы работаете в системе от обычного пользователя (не root), то кнопка «Импортировать» будет недоступна.
Чтобы разблокировать кнопку «Импортировать», выполните следующую команду:
Данный способ может не сработать, поэтому рассмотрим, как добавить доверенные корневые центры сертификации в командной строке.
Суть метода очень проста:
- Добавить свой корневой CA сертификат в папку, предназначенную для таких сертификатов.
- Запустить программу для обновления общесистемного списка сертификатов.
Пути и команды в разных дистрибутивах Linux чуть различаются.
Просмотреть Subject всех корневых CA сертификатов можно командой:
Для демонстрации я добавлю сертификат с Common Name, включающим «HackWare», тогда для проверки, имеется ли сертификат с таким именем среди корневых CA, я могу использовать команду:
Для добавления своего корневого CA в доверенные в Debian, Kali Linux, Linux Mint, Ubuntu и их производных:
1. Проверьте, существует ли директория /usr/local/share/ca-certificates:
Если её ещё нет, то создайте:
Сертификат должен быть в формате PEM (обычно так и есть) и иметь расширение .crt — если расширение вашего сертификата .pem, то достаточно просто поменять на .crt.
2. Скопируйте ваш сертификат командой вида:
3. Запустите следующую команду для обновления общесистемного списка:
Проверим наличие нашего CA сертификата среди доверенных:
Сертификат успешно найден:
Чтобы его удалить:
Для добавления своего корневого CA в доверенные в Arch Linux, BlackArch и их производных:
1. Выполните команду вида:
2. Обновите общесистемный список доверенных CA:
Чтобы удалить этот сертификат:
Добавление сертификатов в базу данных NSS
Некоторые приложения используют базу данных NSS, и у вас может быть необходимость добавить доверенные CA в неё.
Последующие изменения повлияют только на приложения, использующие базу данных NSS и учитывающие файл /etc/pki/nssdb.
1. Сначала создайте структуру каталогов для системных файлов базы данных NSS:
Затем создайте новый набор файлов базы данных. Пароль нужен для того, чтобы базу данных могли редактировать только люди, которые его знают. Если все пользователи в системе (и с доступом к резервным копиям) заслуживают доверия, этот пароль можно оставить пустым.
2. Убедитесь, что файлы базы данных доступны для чтения всем:
Примечание: вышеприведённые инструкции применимы только в том случае, если пока не существует общесистемного набора файлов базы данных NSS. Если он уже существует, то важно знать пароль для этого набора баз данных (конечно, если он защищён паролем).
3. Теперь, когда доступны файлы базы данных NSS, добавьте сертификат в хранилище следующим образом:
Биты доверия, используемые в приведённом выше примере, помечают сертификат как надёжный для подписи сертификатов, используемых для связи SSL/TLS. Имя (указывается после опции -n), используемое в команде, можно выбрать любое, но убедитесь, что его легко отличить от других сертификатов в магазине.
Аналогичные инструкции можно использовать для включения сертификата только в базу данных NSS конкретного пользователя:
Удаление из файлов базы данных NSS
Чтобы удалить сертификат из любой базы данных NSS, используйте команду certutil следующим образом. В этом примере используется общесистемное расположение базы данных NSS, но его можно легко изменить на пользовательское
Как добавить корневой сертификат в доверенные в Linux в веб браузеры
Chrome, Chromium, Firefox и созданные на их основе веб браузеры доверяют корневым сертификатам, установленным на уровне системы. То есть вам достаточно добавить в доверенные CA сертификат как это показано в предыдущем разделе.
Причём эти браузеры хотя и используют NSS, они игнорируют общесистемные сертификаты NSS, которые можно добавить в файл /etc/pki/nssdb!
Тем не менее приложения, которые используют NSS (такие как Firefox, Thunderbird, Chromium, Chrome) хранят свои списки доверенных сертификатов в файлах cert9.db. Чтобы добавить свой сертификат в каждый из этих файлов можно использовать скрипт.
Сохранить следующий код в файл CAtoCert9.sh:
В этом файле измените значение certfile на имя файла вашего сертификата и значение certname на имя вашего сертификата, сохраните и закройте файл.
Затем запустите его следующим образом:
В результате в домашней папке пользователя будут найдены все файлы cert9.db и в каждый из них будет добавлен указанный CA сертификат.
Вы можете добавить CA сертификаты в графическом интерфейсе каждого браузера.
- В настройках Chrome: Конфиденциальность и безопасность → Безопасность → Настроить сертификаты → Центры сертификации
- В настройках Chromium: Конфиденциальность и безопасность (выбрать «Ещё») → Настроить сертификаты → Центры сертификации
Нажмите кнопку «Импорт»:
Выберите файл с сертификатом.
Укажите, какие полномочия вы даёте этому сертификату:
- В настройках Firefox: Приватность и Защита → Сертификаты → Просмотр сертификатов → Центры сертификации:
Нажмите кнопку «Импортировать»:
Выберите файл с сертификатом.
Укажите, какие полномочия вы даёте этому сертификату:
Для глубокого понимания OpenSSL смотрите также полное руководство: «OpenSSL: принципы работы, создание сертификатов, аудит».