В этой статье мы покажем, как добавить (установить) новый сертификат в список доверенных корневых сертификатов в Linux.
Например, вы используете на своем сайте самоподписанный SSL/TLS сертификат и не хотите, чтобы на клиентах при открытии сайта появлялась ошибка SEC_ERROR_UNKNOWN_ISSUER.
Или это может быть самоподписанный сертификат с сайта 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_x000D_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._x000D_
В данном случае нам нужно добавить корневой центр сертификации этого сайта в список доверенных корневых сертификатов 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
$ sudo apt-get install -y ca-certificates
Если сертификаты успешно добавлены, появится сообщение о том, что сертфикат скопирован в /etc/ssl/certs/:
Updating certificates in /etc/ssl/certs…_x000D_2 added, 9 removed; done._x000D_Running hooks in /etc/ca-certificates/update.d
$ sudo dpkg-reconfigure ca-certificates
Выберите из списка сертификаты, которые нужно добавить в доверенные.
В 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.
Вы можете убедиться, что ваша ОС доверяет сертификату с помощью команду:
$ openssl verify my_trusted_sub_ca.crt
error 20 at 0 depth lookup: unable to get local issuer certificate_x000D_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
_x000D_exta/mycert1.crt_x000D_
$ 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) для добавления сертификата в доверенные:
# yum install ca-certificates
# cp mycert.crt /etc/pki/ca-trust/source/anchors/
# update-ca-trust force-enable
# update-ca-trust extract
Теперь все системные утилиты будут доверять сайтам, использующим данный 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 будут доверять все браузеры.
Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…
В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…
Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…
Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…
Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…
В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…