Проблема
У HP есть серия тонких клиентов Smart Zero Client для сервисов VMWare/Citrix/RDP. Для работы с корпоративными сайтами этих служб часто нужно импортировать корневые сертификаты корпоративных Certificate Authority. Для централизованной раздачи настроек существует HP Device Manager и Profile Editor, с помощью которых на устройства можно передать файлы сертификатов. В документации описано куда нужно положить файлы сертификатов, для того чтобы они нормально заработали с клиентами Citrix\VMWare, но вот в Firefox сертификаты можно импортировать только руками (по утверждению инженеров службы поддержки HP).
Если нужно развернуть 2-3 десятка клиентов, то это не проблема, но если их нужно развернуть несколько сотен, то это уже сложнее.
Решение
Для решения этой проблемы пришлось покопаться в прошивке тонкого клиента.
В результате решение такое - импортировать файлы сертификатов при каждом старте Firefox из директории /usr/local/shae/ca-certificates/, откуда забирает файлы сертификатов и встроенный Certificate Manager.
Для автоматического импорта сертификатов нужно слить с устройства файл /usr/bin/firefox_wrapper.sh, который подготавливает окружение для запуска Firefox и добавить в него кусочек кода, импортирующего сертификаты.
Итак.
На тонком клиенте отсутствует ssh и web-сервер, поэтому сливать файлы будем с помощью netcat - nc.
Поехали.
На настольной linux-машине (виртуальной или реальной) запускаем nc, который будет слушать порт и складывать поступающие данные в файл:
nc -l 6000 > ~/firefox_wrapper.sh
На тонком клиенте выполняем:
nc - - - -
Затем редактируем получившийся файл.
Перед строками (они запускают Firefox):
ADDRESS=$(mclient --quiet get ${FIREFOX_CONNECTION_SESSION_DIR}/address) GTK2_RC_FILES=/usr/share/themes/Xfce/gtk-2.0/gtkrc:/etc/gtk-2.0/gtkrc firefox -no-remote -profile "${FIREFOX_CONFIG_DIR}" $ADDRESS
Нужно вставить:
#Add additional Root CA Certificate #certutil -A -n renins.pem -t "CT" -d ${FIREFOX_CONFIG_DIR} -i /usr/local/share/ca-certificates/renins.crt #CERT_IMPORT_DIR="/usr/local/share/ca-certificates/" for i in $(find /usr/local/share/ca-certificates/ -name "*.*" -print | grep "\.cer\|\.crt"); do alias=$(basename ${i} .pem | tr A-Z a-z | tr -cs a-z0-9 _) alias=${alias%*_} certutil -A -n ${alias} -t "CT" -d ${FIREFOX_CONFIG_DIR} -i ${i} done
После этого можно импортировать файлы (сертификат и firefox_wrapper.sh) в профиль с помощью HP Profile Manager.
Сертификат нужно положить с правами по-умолчанию в папку, указанную в документации, из которой забирает сертификаты и Certificate Manager - /usr/local/share/ca-certificates/.
Файл firefox_wrapper.sh нужно положить в /usr/bin и дать на него права 755.
Discussion