Os navegadores têm uma lista de certificados confiáveis de "autoridade de certificação" (CA). Se o certificado de um servidor for assinado por um desses certificados da CA e formado corretamente, você não receberá o aviso SSL.
Muitos navegadores são fornecidos com muitos certificados de CA comuns, como Verisign, Thawte, etc. A maioria dos navegadores permite importar uma nova CA para esta lista de CAs confiáveis.
Como criar seu próprio certificado de servidor autoassinado, você pode criar seu próprio certificado de CA autoassinado. Você pode usá-lo para assinar o certificado do servidor. Se a sua autoridade de certificação não for fornecida por uma empresa conhecida, o que não seria uma empresa que você fez, ela deverá ser explicitamente importada no servidor.
Eu já xca
fiz isso antes. Possui modelos para CAs e servidores HTTP. O procedimento é este:
- Crie uma chave privada para sua CA
- Crie uma autoridade de certificação autoassinada usando esta chave usando o modelo "CA"
- Crie uma chave privada para o seu servidor proxy
- Crie uma "solicitação de assinatura de certificado" (CSR) usando a segunda chave, referenciando a CA que você acabou de criar.
- "Assine" o CSR e você terá o certificado do servidor proxy, que faz referência à sua própria CA.
Você precisará exportar (como um arquivo, se estiver usando xca
) o certificado da CA (mas não inclua a chave privada, é claro). A .pem
será gerado, mas você pode alterar a extensão para .crt
. Quando um usuário clica nisso, ele será oferecido para instalação no Firefox e no Internet Explorer, e possivelmente em outros navegadores principais. Quanto à instalação automática deste .crt, você pode:
- use a política de grupo no IE
- direcione os usuários a uma página de introdução solicitando que eles baixem / instalem o .crt se quiserem evitar avisos.
Você pode usar as funções de exportação no certificado do servidor HTTP (exportar a chave privada e o certificado para o lado do servidor) para colocar no servidor proxy.
/etc/ssl/certs/ssl-cert-snakeoil.pem
(é isso que o pacote Debianssl-cert
cria para você). Nós o copiamos para o host A e o chamamos/etc/ssl/certs/host-B.pem
(já que esse host já pode ter umssl-cert-snakeoil.pem
). Então nós corremosln -s /etc/ssl/certs/host-B.pem $(openssl x509 -noout -hash -in /etc/ssl/certs/host-B.pem)
.No Debian e Ubuntu, você deve copiar o arquivo
certificate.pem
para/usr/local/share/ca-certificates/certificate.crt
e depois executardpkg-reconfigure ca-certificates
./etc/ssl/certs
é gerenciado por esse comando.fonte