SEÇÃO 1 - CONSIDERAÇÕES PRELIMINARESComo todos sabemos, o desenvolvimento do Warsaw há tempos vem deixando muito a desejar (olha eu usando um eufemismo...
) e é daí que advém a necessidade de o linuxista (usuário de Linux) executar "trocentos" comandos mirabolantes para sanar tais falhas de desenvolvimento e, deste modo, conseguir usar o Warsaw no Linux.
Pois é: entre os tantos problemas já relatados e contornados na
resposta 59, uma (infeliz) novidade um pouco mais recente é que algumas versões do Warsaw estão sendo lançadas com falhas de desenvolvimento que fazem com que o certificado do Warsaw, denominado
Warsaw Personal CA (abreviação inglesa de
Autoridade Certificadora do Warsaw Pessoal), não seja gerado (ou seja gerado mas não instalado) corretamente no *Ubuntu e, por isso, acabe não sendo detectado por nenhum navegador. Como sem esse certificado instalado no sistema (ou com ele instalado porém "invisível" para os navegadores) o acesso à sua conta bancária via navegador web não é possível, o jeito é
manualmente gerar o certificado e instalá-lo no sistema...
Os comandos que seguem na
SEÇÃO 2 ajudarão você a gerar e instalar o certificado. No entanto,
para que os comandos abaixo funcionem é imprescindível que o Warsaw já esteja instalado e em execução no sistema. Portanto, caso você não tenha certeza de que o Warsaw foi instalado e posto em execução em seu sistema, acesse o terminal do shell e execute nele este comando:
sudo netstat -tulapv |grep -i core
Caso o resultado do comando acima seja algo assim:
tcp 0 0 localhost:30800 0.0.0.0:* OUÇA 725/core
tcp 0 0 localhost:30900 0.0.0.0:* OUÇA 725/core
...isso significa que o
daemon denominado
core, que é o monitor de serviço do Warsaw (esse é o verdadeiro "nome" do Warsaw), está instalado, está em execução e, por estar em execução, está no momento "escutando" as (está como
listener das) portas TCP 30800 e 30900. De fato, isso tudo aí precisa ocorrer para que o Warsaw possa ser considerado instalado e em execução no sistema Linux do seu computador.
Ah, sim: aquele número
725 é o número do processo
core que estava em execução no meu sistema Linux quando eu redigi este texto. No seu sistema Linux esse número poderá ser outro e
isso é normal, pois cada vez que o computador é ligado ou reiniciado o sistema atribui um novo número de processo (PID) para o
daemon core, ou seja:
esse número vive mudando mesmo e isso não é relevante.
Em outras palavras, no resultado do comando acima o que importa é que constem aquelas duas linhas: uma da
escuta TCP na porta 30800 para o daemon core e outra da
escuta TCP na porta 30900 para o mesmo daemon core.
- Caso o Warsaw não esteja em execução em seu sistema Linux, retorne à resposta 59 e siga as dicas lá apresentadas para que você consiga instalar o Warsaw e colocá-lo em execução. Só retorne pra cá após o Warsaw estar instalado e em execução.
- Caso o Warsaw esteja instalado e em execução em seu sistema Linux mas, apesar de você ter seguido todas as dicas da resposta 59, o certificado Warsaw Personal CA continue não aparecendo em seu(s) navegador(es), siga para a SEÇÃO 2 abaixo.
SEÇÃO 2 - GERAR E INSTALAR O CERTIFICADO DO WARSAW NOS NAVEGADORESAbra uma janela do terminal do shell do Linux,
em modo usuário (não use o modo root / superusuário!) e siga os passos abaixo para gerar e instalar manualmente o certificado Warsaw Personal CA em seus navegadores web.
2.1. Gere o certificado.Execute este supercomando quilométrico para gerar o certificado
Warsaw Personal CA:
echo Acessando /var/tmp ; sleep 3 ; clear ; pushd /var/tmp ; echo Copiando arquivo de config do Warsaw... ; sleep 3 ; clear ; cp /usr/local/etc/warsaw/ws.cnf openssl.conf.gz ; echo Descompactando o arquivo de config do Warsaw... ; sleep 3 ; clear ; gzip -df openssl.conf.gz ; echo Executando comandos openssl para gerar o certificado... ; sleep 3 ; clear ; sudo openssl genrsa -des3 -passout pass:$(< /sys/class/dmi/id/modalias) -out root_ca.key 4096 ; sudo openssl req -new -sha256 -x509 -days 3650 -key root_ca.key -passin pass:$(< /sys/class/dmi/id/modalias) -out root_ca.cer -config openssl.conf -subj "/CN=Warsaw Personal CA" ; sudo openssl genrsa -des3 -passout pass:$(< /sys/class/dmi/id/modalias) -out localhost.key 4096 ; sudo openssl req -new -key localhost.key -passin pass:$(< /sys/class/dmi/id/modalias) -out localhost.csr -config openssl.conf -subj "/CN=127.0.0.1" ; sudo openssl x509 -req -sha256 -days 3650 -in localhost.csr -CA root_ca.cer -CAkey root_ca.key -passin pass:$(< /sys/class/dmi/id/modalias) -set_serial 1 -out localhost.crt ; cat localhost.crt localhost.key |sudo tee /usr/local/etc/warsaw/ws.dat ; md5sum "/sys/class/dmi/id/modalias" | awk '{ print $1 }' |sudo tee /usr/local/etc/warsaw/ws.hsh
NOTA: os comandos seguintes (dos itens 2.2, 2.3 etc.) já se encarregarão de instalar o certificado etc. No entanto, caso eles porventura não funcionem ou você prefira fazer a instalação do certificado manualmente, então, partindo-se da premissa de que o supercomando acima funcionou (e que portanto o arquivo do certificado foi gerado), o arquivo
root_ca.cer (esse arquivo
é o certificado do Warsaw) foi gerado e se encontra dentro do diretório
/var/tmp/. Portanto, se você quiser importar
manualmente o certificado do Warsaw, basta executar o supercomando acima, em seguida abrir seu navegador, ir até o menu em que seu navegador permite importar certificados, daí acesse a parte em que se importam certificados de
Autoridades, selecione lá o arquivo
/var/tmp/root_ca.cer e, caso o navegador pergunte, informe que esse certificado serve para identificar
websites e
criadores de software (isso serve para o certificado funcionar no website do banco e identificar a GAS/Diebold como criadora do Warsaw).
2.2. Informe ao sistema qual sua conta de usuário e conta no Firefox.Execute o supercomando abaixo para que o sistema temporariamente armazene o nome da sua conta de usuário Linux e o nome do seu perfil de usuário Firefox:
userprofile=`whoami` ; export userprofile ; for line in $(sudo cat /home/$userprofile/.mozilla/firefox/profiles.ini) ; do campo=${line%=*} ; if [ "$campo" = "Path" ] ; then firefoxprofile=${line#*=} ; export firefoxprofile ; fi ; done
2.3. Instale o certificado.Execute o supercomando abaixo para excluir algum certificado do Warsaw que porventura esteja danificado e em seguida instalar o certificado do Warsaw para todos os navegadores do sistema (isso se aplica apenas ao seu login de usuário no Linux):
pal1=C ; pal2=u ; pal=$pal1$pal2 ; sudo certutil -D -d sql:/home/$userprofile/.pki/nssdb -n "Warsaw Personal CA" $userprofile ; sudo certutil -A -n "Warsaw Personal CA" -t ""TCu,$pal,Tuw"" -i /var/tmp/root_ca.cer -d sql:/home/$userprofile/.pki/nssdb $userprofile
2.4. Torne o certificado visível também para o Firefox.Caso você utilize o Firefox e ele não esteja exibindo o certificado do Warsaw, execute o comando abaixo para resolver o problema:
sudo killall firefox ; sudo ln -sf /home/$userprofile/.pki/nssdb/cert9.db /home/$userprofile/.mozilla/firefox/$firefoxprofile/cert9.db ; sudo ln -sf /home/$userprofile/.pki/nssdb/key4.db /home/$userprofile/.mozilla/firefox/$firefoxprofile/key4.db
Se tudo deu certo, o certificado
Warsaw Personal CA agora estará aparecendo em todos os seus navegadores: Google Chrome, Mozilla Firefox, Opera Browser etc. Basta executar seu navegador web, acessar a página de preferências/configurações dele, seguir para a seção que mostra os certificados, daí clicar sobre o item
Autoridades e procurar pelo certificado
Warsaw Personal CA.
Caso o certificado esteja aparecendo em seu navegador, retorne à página do Banco do Brasil e veja se agora a tela de acesso à conta é inicializada corretamente.
IMPORTANTE: outro ponto falho do Warsaw é que a instalação dele é
global mas a instalação do certificado do Warsaw é
local (aplica-se somente ao usuário que instalou o Warsaw no sistema). Digo: o instalador do Warsaw não lhe dá a opção de escolher quais usuários do sistema você deseja que possuam o certificado do Warsaw (sem o qual não é possível usar o Warsaw nos navegadores web). Em outras palavras: uma vez que o Warsaw esteja instalado, aquele
daemon core ficará em execução
independentemente da conta de usuário Linux que esteja conectada no momento (o Warsaw ficará "disponível" para todos os usuários do sistema Linux), porém
o certificado do Warsaw será instalado somente na conta do usuário que executou os procedimentos da SEÇÃO 2, o que deixará os demais usuários do sistema sem o certificado do Warsaw.
Exemplo: se no seu sistema Linux você tiver uma conta denominada
bogus que possua acesso root / superusuário (por intermédio do comando
sudo) mas sua irmã tiver, nesse mesmo sistema Linux, uma conta denominada
mana, então quando você se conectar à conta
bogus e executar os comandos da
SEÇÃO 2 você instalará o certificado
Warsaw Personal CA para - e
somente para - a sua conta
bogus: se a sua irmã efetuar login no Linux usando a conta
mana, o(s) navegador(es) dela
não mostrará/mostrarão o certificado do Warsaw.
Para resolver isso, será necessário que a sua irmã efetue login no sistema com a conta
mana e em seguida execute os comandos da
SEÇÃO 2. No entanto, os comandos só funcionarão caso a conta
mana esteja autorizada a executar o comando
sudo (abreviação de
superuser do, ou seja, "temporariamente executar algo, com poderes de superusuário"): caso a conta
mana não possua essa autorização é porque a conta
mana não pertence ao grupo
sudo. Se quiser ver quem no seu sistema pertence ao grupo
sudo, execute este comando, no terminal do shell:
cat /etc/group |grep -i sudo
Se o resultado do comando acima for algo assim:
sudo:x:33:bogus,mana
...então tanto a conta
bogus quanto a conta
mana podem executar o comando
sudo e, portanto, a conta
mana pode executar todos os comandos da
SEÇÃO 2 tranquilamente, pois neste cenário eles funcionarão e instalarão corretamente o certificado do Warsaw para a conta
mana.
No entanto, caso no resultado do comando acima a conta
mana não apareça, isso significa que a conta
mana não está autorizada a executar o comando
sudo. Neste caso, a solução consiste em você se conectar ao sistema normalmente, usando sua conta
bogus mesmo, então abrir uma janela do terminal do shell, executar normalmente o comando ali do item
2.1, só que em seguida você executará o comando do item
2.2 substituindo aquele código
`whoami` pela palavra
mana, ou seja: no lugar de
`whoami` você vai usar o nome da conta de usuário em que você deseja instalar o certificado.
Seguindo o exemplo acima (em que supostamente sua conta de usuário chama-se
bogus e possui autorização para executar o comando
sudo, porém existe uma segunda conta no seu sistema Linux, conta essa denominada
mana, e essa conta
mana não possui autorização para executar o comando
sudo porém essa conta
mana também precisa ter o certificado do Warsaw instalado), o comando do item
2.2 deverá então ficar assim:
userprofile=mana ; export userprofile ; for line in $(sudo cat /home/$userprofile/.mozilla/firefox/profiles.ini) ; do campo=${line%=*} ; if [ "$campo" = "Path" ] ; then firefoxprofile=${line#*=} ; export firefoxprofile ; fi ; done
Após você executar o comando
2.2 modificado, seu sistema Linux estará "sabendo" que o usuário a ser afetado pelos demais comandos será a conta
mana, portanto agora basta executar os comandos dos itens seguintes (
2.3 e
2.4) que o certificado será instalado na conta
mana. E tudo isso sem precisar torná-la superusuária, sem ela precisar efetuar login na conta
mana e executar comando nenhum.