Клиентский SSL-сертификат в Windows: Chrome, Edge, Firefox
Эта инструкция – продолжение статьи
Настройка аутентификации по SSL сертификатам клиентов на Nginx.
У вас есть файл user1.p12 с сертификатом и закрытым ключом и пароль от него. Осталось установить его в систему.
В Windows все просто: у системы есть общее хранилище сертификатов пользователя (Личное), и браузеры берут клиентские сертификаты из него:
- Chrome, Edge, Яндекс Браузер, Opera, Brave, Vivaldi – только из системного хранилища;
- Firefox начиная с версии 90 тоже видит сертификаты из системного хранилища, а кроме того имеет собственное.
Поэтому достаточно один раз установить сертификат в систему, и он будет доступен всем браузерам.
Сертификат ставится в хранилище текущего пользователя – права администратора не нужны.
Установка через интерфейс
- Дважды щелкните по файлу
user1.p12. Откроется Мастер импорта сертификатов. - Расположение хранилища – оставьте Текущий пользователь и нажмите Далее.
- Путь к файлу уже подставлен – нажмите Далее.
- Введите пароль от файла. Параметры импорта:
- Пометить этот ключ как экспортируемый – не отмечайте, если пользователю не нужно переносить ключ на другие устройства. Так закрытый ключ нельзя будет выгрузить из системы;
- Включить усиленную защиту закрытого ключа – по желанию. Windows будет спрашивать подтверждение (или пароль) при каждом использовании ключа.
- Выберите Автоматически выбрать хранилище на основе типа сертификата – сертификат с ключом попадет в Личное.
- Нажмите Готово. Должно появиться сообщение Импорт успешно выполнен.
Тот же мастер можно открыть из браузера: в Chrome и Edge это Настройки → Конфиденциальность и безопасность → Безопасность → Управление сертификатами (в новых версиях – Управление сертификатами, импортированными из Windows), кнопка Импорт.
Проверить установленные сертификаты можно в оснастке certmgr.msc (Win + R → certmgr.msc): раздел
Личное → Сертификаты. Там же сертификат удаляется – правой кнопкой Удалить.
Установка через консоль
PowerShell
Пароль лучше вводить интерактивно, чтобы он не остался в истории команд:
$password = Read-Host -AsSecureString -Prompt "Пароль от p12"
Import-PfxCertificate -FilePath .\user1.p12 -CertStoreLocation Cert:\CurrentUser\My -Password $passwordПо умолчанию закрытый ключ импортируется как неэкспортируемый. Чтобы разрешить экспорт, добавьте параметр
-Exportable.
Посмотреть установленные сертификаты:
Get-ChildItem Cert:\CurrentUser\My | Format-List Subject, Issuer, Thumbprint, NotAfterУдалить сертификат вместе с закрытым ключом:
Get-ChildItem Cert:\CurrentUser\My | Where-Object Subject -like "*CN=user1*" | Remove-Item -DeleteKeycertutil
Утилита certutil есть в любой Windows и работает в обычной командной строке. Ключ -user обязателен – без него
сертификат попадет в хранилище компьютера, и потребуются права администратора. Пароль утилита спросит сама.
certutil -user -importpfx user1.p12 NoExportПосмотреть сертификаты в хранилище Личное:
certutil -user -store MyУдалить сертификат по серийному номеру или имени из вывода предыдущей команды:
certutil -user -delstore My "user1"Firefox
Начиная с версии 90 Firefox автоматически использует сертификаты из системного хранилища Windows. Если вы установили сертификат способами выше, больше ничего делать не нужно – при заходе на сайт Firefox предложит его выбрать.
Если Firefox не видит сертификат, откройте about:config и проверьте, что параметр
security.osclientcerts.autoload равен true.
Можно установить сертификат только в Firefox, не трогая систему: Настройки → Приватность и Защита → Сертификаты → Просмотр сертификатов… → Ваши сертификаты → Импортировать… Так сертификат будет доступен только в этом профиле Firefox.
Автоматический выбор сертификата
При каждом новом запуске браузер спрашивает, какой сертификат использовать. Если у пользователя он один, выбор можно автоматизировать политикой AutoSelectCertificateForUrls. Например, для Chrome создайте в реестре строковый параметр:
reg add "HKCU\Software\Policies\Google\Chrome\AutoSelectCertificateForUrls" /v 1 /t REG_SZ /d "{\"pattern\":\"https://example.com\",\"filter\":{\"ISSUER\":{\"O\":\"Company Name\"}}}"В фильтре укажите Organization Name вашего центра сертификации. Для Edge используйте раздел
HKCU\Software\Policies\Microsoft\Edge\AutoSelectCertificateForUrls. Применение политики можно проверить на
странице chrome://policy или edge://policy.
Если сертификат не работает
- Браузер не предлагает выбрать сертификат. Проверьте в
certmgr.msc, что сертификат лежит в Личное и у него есть закрытый ключ (на значке ключик, в свойствах – «Есть закрытый ключ для этого сертификата»). Если сертификат попал в Другие пользователи или Доверенные корневые центры, удалите его и импортируйте заново в Личное. - Выбран не тот сертификат. Chrome и Edge запоминают выбор до перезапуска браузера – закройте все его окна, включая фоновые процессы в трее.
- Сервер отклоняет сертификат. Проверьте, что он подписан тем центром сертификации, который указан в
ssl_client_certificateв настройках nginx, и что у CA и клиента разные поля Organization Name.
Инструкции для других систем: Linux, macOS, Android и iOS.

