Inicializando o perfil do Firefox a partir da linha de comando

4

Estou tentando provisionar uma caixa do Vagrant com uma CA raiz e instalá-lo no Firefox. Eu descobri que posso instalar o certificado usando certutil , mas o problema é que ele requer um perfil existente do Firefox ao qual adicionar o certificado.

Em uma nova caixa nova, o perfil é criado na primeira vez que o Firefox é executado. Isso é problemático porque o Firefox não será executado adequadamente sem um monitor, mas isso pode ser contornado usando a opção -headless . Mas isso precisa ser morto manualmente. Como é necessário um pouco de tempo para criar o novo perfil, é necessário um hack usando sleep . No geral eu tenho o seguinte:

#!/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

Existe uma maneira melhor de fazer isso sem usar sleep e kill ?

    
por George Kettleborough 19.12.2017 / 14:48

1 resposta

1

Eu não faço provisionamento, por isso é apenas um palpite:

Isso pode ser mais um truque do que você já está fazendo, mas talvez ele lhe dê algumas idéias.

(Faça o passo 3 uma vez primeiro. Se aparecerem quaisquer correspondências em arquivos binários, esta abordagem não funcionará - pelo menos, não sem muitos ajustes experimentais que podem ter que ser modificados com novas versões.)

1) Crie uma nova instalação do Firefox em outra máquina (que nunca tenha o Firefox ou outro material do Mozilla instalado) para usar como modelo.

Não faça nada que você não queira que todos os usuários tenham. Certifique-se de que não há nada "interessante" em nenhum dos outros diretórios sob $ HOME / .mozilla - como bits de outros aplicativos e que somente o novo perfil de usuário foi criado sob $ HOME / .mozilla / firefox.

Copie $ HOME / .mozilla (usando cp -a , etc.) como um modelo (MT para abreviar).

2) Em cada nova máquina, instale o MT como $ HOME / .mozilla (Certifique-se de que os novos arquivos são de propriedade do usuário atual e do grupo.) Isso dará a cada usuário o mesmo nome de perfil random-string.default. Se você quiser, pode renomeá-lo para qualquer outra coisa que desejar, desde que também altere a entrada em profile.ini que aponta para ele.

3) Isso pode funcionar como está. Eu não posso dizer porque meu perfil é antigo com muitas modificações. Só para ter certeza:

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

na árvore do subdiretório do perfil. (Você só faz a less parte uma vez. Ela será sempre ou nunca um problema. Substitua template-user-home-directory pelo caminho real do diretório do usuário na máquina original.)

Se aparecer vazio, você está feito. Se não:

4) Pegue a saída do grep acima (certificando-se de que ela tenha caminhos relativos completos) e use-a para fazer um loop em todos esses arquivos usando sed -i (ou uma ferramenta semelhante) para substituir o template user-home-directory com o diretório inicial do usuário atual onde quer que isso ocorra.

Isso deve ser OK, desde que não apareça nenhuma correspondência em arquivos binários. Com arquivos binários, todas as apostas estão desativadas.

HTH

    
por 26.12.2017 / 07:09