Сегодня поговорим на довольно специфичную тему, уверен, что в своей работе многие с ней сталкиваются - это выбор клиентских сертификатов в браузере. Пример в данной статье абстрактный и будет демонстрировать работу только в браузере Chrome, но по аналогии можно реализовать для любого браузера.
Хочу начать с рассказа о том, почему это важно и как именно может пригодиться.
Итак, я работаю в команде Сбера и, как известно, в процессах банковского сектора много сложностей. Одна из таких сложностей - безопасность, её следует чтить, соблюдать и выполнять требования. В связи с этим, для захода на определенные внутрибанковские ресурсы используются сертификаты безопасности.
Это выглядит так:
В таком случае, становится проблематично заходить на такие ресурсы, с помощью каких-то сторонних инструментов. Поэтому, нам нужно реализовать вход на такие ресурсы программно для последующей автоматизации: автотесты, парсинг данных, пентестинг и так далее.
В своей работе нам необходимо понимать, как можно обойти ручной выбор сертификата, ведь при программной манипуляции с сайтом всё должно происходить в автоматическом режиме и руками ничего выбирать не надо.
На помощь приходит Chrome API (в других браузерах нужно посмотреть соответствующую документацию по API).
Напишите bash скрипт, который программно укажет браузеру какой сертификат необходимо выбрать при запуске:
#!/bin/bash
# Configure Chromium browser to automatically select the certificate.
defaults write org.chromium.Chromium AutoSelectCertificateForUrls -array
defaults write org.chromium.Chromium AutoSelectCertificateForUrls -array-add -string '{"pattern":"*", "filter": {"SUBJECT": {"CN": "Серт 1"}}}'
Запустить скрипт можно с помощью команды в терминале ./<file_name>.bash
Настройка AutoSelectCertificateForUrls скажет браузеру, что сертификат будет выбран программно. В опциональном параметре filter, указав параметр SUBJECT, можно прописать имя сертификата, который необходимо выбрать.
Обратите внимание, что имя "Серт 1"в параметре SUBJECT соответствует имени сертификата на рисунке 1.
Также важно учитывать, что сертификат выбирается автоматически при запуске браузера не из режима инкогнито. В режиме инкогнито всегда будет запрашиваться ручной выбор сертификата.
Всем спасибо за прочтение! Надеюсь, моя статья была полезна, и вы сократите большое количество времени, когда столкнетесь с похожим запросом.
В дальнейшем, есть планы подготовить материал для автоматизации данного процесса для CI, когда нам нужно запускать, например, тестирование перед раскаткой на продовую среду.
#автотесты #пентест #парсинг #AutoSelectCertificateForUrls