Глобальная настройка смарт-карты для Chrome/Chromium

Вопрос или проблема

Я пытаюсь настроить поддержку смарт-карт в браузере для всех пользователей системы на LTS 20.04. Я прочитал довольно много руководств, включая это:

https://help.ubuntu.com/community/CommonAccessCard

но большинство из них в итоге используют команду, подобную этой:

modutil -dbdir sql:.pki/nssdb/ -add “OpenSC” -libfile /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so

Которая работает, но каждый пользователь должен выполнять её (на каждом используемом им компьютере). Если я пытаюсь создать /etc/pki/nssdb и использовать аналогичную команду, это, похоже, не работает.

Я натолкнулся на следующее:

dpkg-divert --rename --add /usr/lib/firefox/libnssckbi.so
dpkg-divert --rename --add /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so
ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/firefox/libnssckbi.so
ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so

которое, по-видимому, работало у других, но даже после этого, если я не изменю ~/.pki/nssdb, Chrome не работает, и если я не добавлю устройство безопасности в Firefox (что я, по крайней мере, могу сделать на системном уровне с помощью .json файла), он тоже не “видит” мою смарт-карту.

(Я даже установил Edge и попробовал его, но он ведет себя идентично Chrome. Не могу заставить приложение Teams увидеть мою смарт-карту ни при каких условиях, но это уже другая история.)

Для Firefox вы можете использовать глобальную политику

{
 "policies": {
   "SecurityDevices": {
      "scInterface": "/usr/local/lib/libcvP11.so"
    }
  }
}

которую необходимо разместить в /usr/lib/firefox/distribution/policies.json (По крайней мере для Ubuntu 20.04)
Дополнительную информацию можно найти по ссылке https://support.mozilla.org/en-US/kb/managing-policies-linux-desktops а для списка всех возможных политик можно обратиться к https://github.com/mozilla/policy-templates

На данный момент я не нашел способа сделать это для Chromium. Кажется, возможно иметь глобальную базу данных nss, но она, похоже, игнорируется Chromium. Буду рад услышать работающее решение, и извините, что не могу предоставить его здесь.

Ответ или решение

Настройка поддержки смарт-карт в браузерах Chrome и Chromium в глобальном масштабе на системе, работающей под управлением Ubuntu LTS 20.04, представляет собой интересную, но достаточно сложную задачу. Это требует понимания того, как браузеры хранят и обращаются к сертификатам и модулям безопасности, а также какая роль в этом процессе отводится смарт-картам. В данной ситуации пользователь сталкивается с тем, что браузеры требуют воздействия на уровне каждого отдельного пользователя, что неудобно в корпоративной или многопользовательской среде.

Теоретическая основа

На теоретическом уровне Mozilla Firefox и браузеры на основе Chromium (включая Google Chrome и Microsoft Edge) используют Network Security Services (NSS) как часть своей инфраструктуры безопасности. NSS предоставляет интеграцию с PKCS#11, что дает возможность использовать смарт-карты через соответствующие модули, такие как OpenSC. Однако существуют особенности в использовании NSS между различными браузерами.

  1. Firefox: Возможность централизованного настроения через систему политики (policies.json), которая позволяет задать глобальные параметры безопасности, включая подключение смарт-карт через PKCS#11.

  2. Chromium и Chrome: Хотя они также используют NSS, глобальная конфигурация, аналогичная Firefox, отсутствует, и настройка обычно требует персональной настройки для каждого пользователя.

Конкретные примеры

Пример настройки для Firefox был кратко упомянут в вашем вопросе. Использование policies.json позволяет задать файл JSON в папке /usr/lib/firefox/distribution. Это решение позволяет добавить устройство безопасности на системном уровне, обеспечивая удобство и простоту управления для пользователей.

Что касается Chrome и Chromium, предложенное вами решение с modutil работает, но требует настройки для каждого пользователя. Однако существует несколько методов, которые могут помочь:

  • Использование p11-kit: Поскольку плагин p11-kit-trust.so автоматически обрабатывает сертификаты системы как доверенные, его правильно заданный путь может помочь в решении задачи.

  • Global nssdb: Теоретически возможно создать NSS-базу данных на системном уровне, которая может использоваться всеми пользователями, но для этого необходимо убедиться, что браузеры Chromium не игнорируют такие конфигурации.

Применение на практике

На практике цель заключается в системной интеграции смарт-карт, минимизируя усилия пользователей. Для этого можно предложить следующие шаги:

  1. Централизованная настройка OpenSC: Вероятно, самым простым способом убеждения Chrome/Chromium использовать pkcs11-modul будет создание скрипта, который автоматически выполняется при входе пользователя и настраивает NSS. Скрипт может копировать или привязывать уже настроенную NSS-базу (например, в /etc/pki/nssdb).

  2. Использование политики групп (Group Policy): Если система интегрирована с Active Directory, то есть возможность использования групповой политики для распределения конфигурации среди пользователей. Браузеры на основе Chromium поддерживают административные шаблоны, что также может помочь в управлении.

  3. Настройка p11-kit: Убедитесь, что система и браузеры корректно используют p11-kit. Это может потребовать тестирования и валидации конфигурации через команду p11-kit list-modules.

Заключение

Несмотря на наличие сложностей, системная настройка смарт-карт на Ubuntu LTS 20.04 возможна, хотя и требует индивидуального подхода для браузеров Chrome и Chromium. Совместная настройка через p11-kit и скриптовое управление модификацией NSS-базы данных может стать наиболее элегантным решением. Важно также поддержать интеграцию на системном уровне, чтобы решить потенциальные проблемы безопасности и обеспечить использование смарт-карт всеми приложениями, которые их поддерживают.

Оцените материал
Добавить комментарий

Капча загружается...