4

Я пытаюсь предоставить Vagrant box с корневым CA и установить его в Firefox. Я понял, что могу установить сертификат с помощью certutil но проблема в том, что для его добавления требуется существующий профиль Firefox.

На новой новой коробке профиль создается при первом запуске Firefox. Это проблематично, потому что Firefox не будет работать должным образом без дисплея, но это можно обойти, используя опцию -headless . Но тогда это нужно убить вручную. Так как для создания нового профиля требуется немного времени, он требует взлома с помощью sleep . В целом у меня есть следующее:

#!/bin/bash
sudo DEBIAN_FRONTEND=noninteractive apt-get -y install \
     firefox \
     libnss3-tools
# create a new profile
firefox -headless &
sleep 2
kill $!
# install the root CA into all profiles
cert="${HOME}/mycert.cer"
for certDb in $(find ${HOME}/.mozilla* -name "cert8.db"); do
    certDir="$(dirname ${certDb})"
    echo ${certDir}
    certutil -A -n "mycert" -t "TCu,Cuw,Tuw" -i "${cert}" -d "${certDir}"
done

Есть ли лучший способ сделать это без использования sleep и kill?

1 ответ1

1

Я не занимаюсь подготовкой, так что это всего лишь обоснованное предположение:

Это может быть скорее взломом, чем то, что вы уже делаете, но, возможно, это даст вам некоторые идеи.

(Сделайте шаг 3 один раз первым. Если в двоичных файлах обнаруживаются совпадения, этот подход не сработает - по крайней мере, не без большой экспериментальной настройки, которую, возможно, придется модифицировать с помощью новых выпусков.)

1) Создайте новую установку Firefox на другом компьютере (на котором никогда не было Firefox или других компонентов Mozilla) для использования в качестве шаблона.

Не делайте с ним ничего такого, что не нужно, чтобы все пользователи имели. Убедитесь, что в других каталогах в $ HOME/.mozilla нет ничего "интересного", как в других приложениях, и что только один новый пользовательский профиль был создан в $ HOME/.mozilla/firefox.

Скопируйте $ HOME/.mozilla (используя cp -a и т.д.) В качестве шаблона (для краткости MT).

2) На каждом новом компьютере установите MT как $ HOME/.mozilla (убедитесь, что новые файлы принадлежат текущему пользователю и группе.) Это даст каждому пользователю одно и то же имя профиля random-string.default. Если вы хотите, вы можете переименовать его во что угодно, если только вы измените запись в profile.ini, которая на него указывает.

3) Это может работать как есть. Я не могу сказать, потому что мой профиль старый с большим количеством модификаций. Просто чтобы убедиться:

grep -rl template-user-home-directory * | less

в дереве подкаталога профиля. (Вы делаете less часть только один раз. Это будет всегда или никогда не будет проблемой. Замените template-user-home-directory реальным путем к каталогу пользователя на исходном компьютере.)

Если он окажется пустым, все готово. Если не:

4) Возьмите вывод из вышеупомянутого grep (убедитесь, что он содержит полные относительные пути в нем) и используйте его для циклического перебора всех этих файлов, используя sed -i (или аналогичный инструмент) для замены template-user-home-directory с текущим домашним каталогом пользователя, где бы он ни находился.

Это должно быть нормально, если в двоичных файлах нет совпадений. С бинарными файлами все ставки выключены.

НТН

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .