Table of Contents

Проблема

У 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.