Crie, assine e implemente certificados no sistema Ubuntu 14 usando o certtool

0

Estou tentando aprender sobre geração de certificados, assinatura e o que é preciso para se tornar uma autoridade de certificação.

Estou desenvolvendo um proxy HTTP, que será um proxy intermediário entre o navegador e o servidor da Web real, e será usado para registrar as mensagens HTTPS enviadas recebidas entre o navegador e o servidor da Web real.

Eu preciso gerar certificados dinâmicos para domínios navegados no navegador no proxy HTTP que estou desenvolvendo em uma máquina Ubuntu 14 de 64 bits . Quero que o chrome funcione sem problemas durante a navegação em vários sites.

O que eu fiz até agora:

  1. Chave criada e certificado autoassinado para CA usando os comandos abaixo.

    certtool --generate-privkey --outfile ca-key.pem
    certtool --generate-self-signed --template cert.cfg --load-privkey ca-key.pem --outfile ca-cert.pem
    
  2. Defina explicitamente o certificado ca no armazenamento cert do sistema.

  3. Certificado convertido de pem para crt usando o comando abaixo

    openssl x509 -in ca-cert.pem -inform PEM -out ca-cert.crt
    

    (Eu preciso encontrar o comando correspondente no certtool)

  4. Em seguida, copiei o arquivo ca-cert.crt para /usr/share/ca-certificates/extra caminho e executei o comando abaixo para definir explicitamente o certificado ca no sistema.

    sudo dpkg-reconfigure ca-certificates
    

    Com isso eu recebo uma janela do sistema, seleciono ca-cert.crt e pressiono Ok para definir o certificado explicitamente no sistema. No meu entender, como o ca-cert.crt está definido no sistema explicitamente, todos os outros certificados assinados por este ca-cert e ca-key serão confiáveis no sistema (exceto os aplicativos que usam sua própria loja cert como o firefox).

  5. Em seguida, criei a chave para o proxy HTTP usando o comando abaixo:

    certtool --generate-privkey --outfile key.pem
    
  6. Em seguida, criei o csr para o proxy HTTP usando o comando abaixo.

    certtool --generate-request --load-privkey key.pem --template cert.cfg --outfile request.pem*
    
  7. Em seguida, assinei o csr usando o comando abaixo.

    certtool --generate-certificate --load-request request.pem --load-ca-certificate ca-cert.pem --load-ca-privkey ca-key.pem --template cert.cfg --outfile cert.pem
    

Finalmente eu tenho cert.key e cert.pem. Agora, esses arquivos de certificado são usados para comunicação entre o navegador e meu proxy HTTP.

Vejo que o Chrome não mostra o conteúdo recebido. No entanto, se eu iniciar o Chrome com o modo ignore-certificate-errors , o Chrome funcionará bem e mostrará o conteúdo no site corretamente.

Alguém pode me orientar sobre o que estou fazendo de errado, fazendo com que o Chrome não mostre o conteúdo recebido?

    
por Kamal 14.07.2017 / 13:15

1 resposta

0

Você deu uma olhada no arquivo de modelo cert.cfg ? Esse mesmo nome de arquivo ocorre em duas chamadas diferentes de certtool , em que as finalidades das chamadas são complementares uma da outra.

Verifique se o modelo é o mesmo nos dois casos. Em particular, você deve prestar atenção à ca -instruction em cada arquivo para garantir que eles correspondam.

    
por Rudy Menzi 28.08.2017 / 12:56