Клиентский SSL-сертификат в Linux: Chrome, Chromium, Firefox
Эта инструкция – продолжение статьи
Настройка аутентификации по SSL сертификатам клиентов на Nginx.
У вас есть файл user1.p12 с сертификатом и закрытым ключом и пароль от него. Осталось установить его в браузер.
В Linux нет общего системного хранилища для клиентских сертификатов, как в Windows или macOS. Каждое приложение использует свою базу NSS Shared Database:
| Браузер | Где хранятся сертификаты |
|---|---|
| Chrome, Chromium, Яндекс Браузер, Opera, Brave, Vivaldi, Edge | общая база пользователя $HOME/.pki/nssdb |
| Chromium из Snap | $HOME/snap/chromium/current/.pki/nssdb |
| Браузеры из Flatpak | $HOME/.var/app/<id приложения>/.pki/nssdb |
| Firefox | собственная база в каталоге профиля |
Поэтому Chromium-браузеры достаточно настроить один раз, а Firefox – отдельно.
Chrome, Chromium и другие браузеры на Chromium
Через интерфейс браузера
- Откройте Настройки → Конфиденциальность и безопасность → Безопасность → Настроить сертификаты
(или сразу введите в адресной строке
chrome://certificate-manager). - Перейдите в раздел Ваши сертификаты (в старых версиях – вкладка Ваши сертификаты в окне Управление сертификатами).
- Нажмите Импорт, выберите файл
user1.p12и введите пароль от него.
Сертификат появится в списке. Перезапустите браузер, чтобы он точно подхватил изменения, и откройте сайт. Браузер предложит выбрать сертификат – выбирайте установленный.
Через консоль
Для работы с базой NSS нужен пакет утилит. Для Debian/Ubuntu/Mint:
sudo apt update
sudo apt install libnss3-toolsДля Fedora/CentOS/RHEL:
sudo dnf install nss-toolsДля Arch Linux утилиты входят в пакет nss.
Если базы еще нет (браузер ни разу не запускался), создайте ее:
mkdir -p $HOME/.pki/nssdb
certutil -d sql:$HOME/.pki/nssdb -N --empty-passwordИмпортируйте сертификат в формате PKCS#12 из файла .p12 или .pfx. Утилита запросит пароль от файла:
pk12util -d sql:$HOME/.pki/nssdb -i user1.p12Посмотреть установленные сертификаты (-L) и закрытые ключи (-K):
certutil -d sql:$HOME/.pki/nssdb -L
certutil -d sql:$HOME/.pki/nssdb -KУдалить ненужный сертификат вместе с закрытым ключом. Имя сертификата берите из вывода certutil -L:
certutil -d sql:$HOME/.pki/nssdb -F -n "Certificate Name"Для Chromium из Snap или браузеров из Flatpak подставьте в команды путь к их базе из таблицы выше.
Firefox
Через интерфейс браузера
Откройте меню и выберите Настройки.

Перейдите в раздел Приватность и Защита, найдите блок Сертификаты и нажмите Просмотр сертификатов…
Можно сразу открыть страницу about:preferences#privacy.

На вкладке Ваши сертификаты нажмите Импортировать…, выберите файл user1.p12 и введите пароль от него.

Сертификат появится в списке. При первом заходе на сайт Firefox спросит, какой сертификат использовать. Если отметить Запомнить это решение, выбор сохранится на вкладке Решения по аутентификации – там же его можно сбросить.
Через консоль
Firefox использует ту же базу NSS, поэтому подойдут утилиты из пакета libnss3-tools / nss-tools. Нужно только
указать каталог профиля. Узнать его можно на странице about:profiles – строка Корневой каталог у профиля
по умолчанию. Обычно это:
$HOME/.mozilla/firefox/xxxxxxxx.default-release– Firefox из пакетов дистрибутива или с сайта Mozilla;$HOME/snap/firefox/common/.mozilla/firefox/xxxxxxxx.default– Firefox из Snap (по умолчанию в Ubuntu);$HOME/.var/app/org.mozilla.firefox/.mozilla/firefox/xxxxxxxx.default-release– Firefox из Flatpak.
Перед импортом закройте Firefox, чтобы он не держал базу открытой.
PROFILE=$HOME/.mozilla/firefox/xxxxxxxx.default-release
pk12util -d sql:$PROFILE -i user1.p12
certutil -d sql:$PROFILE -LЕсли на базе Firefox установлен главный пароль, pk12util сначала спросит его, а затем пароль от файла .p12.
Удаление выполняется так же, как для Chromium:
certutil -d sql:$PROFILE -F -n "Certificate Name"Если сертификат не работает
- Браузер не предлагает выбрать сертификат. Проверьте, что сертификат подписан тем центром сертификации, который
указан в
ssl_client_certificateв настройках nginx, и что у CA и клиента разные поля Organization Name. - Выбран не тот сертификат. Chromium запоминает выбор до перезапуска браузера – закройте все его окна. В Firefox удалите запись на вкладке Решения по аутентификации.
- Ошибка пароля при импорте. Убедитесь, что пароль правильный. Если файл создан очень старой версией OpenSSL с устаревшими алгоритмами, пересоздайте его современной версией.
- Проверка без браузера. Если
curl --cert user1.crt --key user1.key https://example.comпроходит, а браузер нет – проблема в установке сертификата, а не в настройках сервера.
Инструкции для других систем: Windows, macOS, Android и iOS.

