Los navegadores tienen una lista de certificados de "autoridad de certificación" (CA) de confianza. Si el certificado de un servidor está firmado por uno de esos certificados de CA y está formado correctamente, no recibirá la advertencia de SSL.
Muchos navegadores se envían con muchos certificados de CA comunes como Verisign, Thawte, etc. La mayoría de los navegadores le permiten importar una nueva CA en esta lista de CA confiables.
Al igual que crear su propio certificado de servidor autofirmado, puede crear su propio certificado CA autofirmado. Luego puede usar eso para firmar su certificado de servidor. Si su CA no es proporcionada por una empresa conocida, que no sería si fuera una que usted hizo, tendrá que ser importada explícitamente en el lado del servidor.
He usado xca
para hacer esto antes. Tiene plantillas para CA y servidores HTTP. El procedimiento es este:
- Cree una clave privada para su CA
- Cree una CA autofirmada usando esta clave usando la plantilla "CA"
- Cree una clave privada para su servidor proxy
- Cree una "solicitud de firma de certificado" (CSR) con la segunda clave, haciendo referencia a la CA que acaba de realizar.
- "Firme" la CSR y obtendrá el certificado del servidor proxy, que hace referencia a su propia CA.
Luego deberá exportar (como un archivo si está usando xca
) el certificado de CA (pero no incluya la clave privada, por supuesto). Se .pem
generará A pero puede cambiar la extensión a .crt
. Cuando un usuario hace clic en eso, se le ofrecerá que se instale en Firefox e Internet Explorer, y posiblemente en otros navegadores principales. En cuanto a la instalación automática de este .crt, puede:
- usar la política de grupo en IE
- dirija a los usuarios a una página de introducción pidiéndoles que descarguen / instalen .crt si quieren evitar advertencias.
Luego puede usar las funciones de exportación en el certificado del servidor HTTP (exportar tanto la clave privada como el certificado para el lado del servidor) para poner en su servidor proxy.
/etc/ssl/certs/ssl-cert-snakeoil.pem
(esto es lo que el paquete Debianssl-cert
crea para usted). Lo copiamos al host A y lo llamamos/etc/ssl/certs/host-B.pem
(ya que este host ya podría tener assl-cert-snakeoil.pem
). Entonces corremosln -s /etc/ssl/certs/host-B.pem $(openssl x509 -noout -hash -in /etc/ssl/certs/host-B.pem)
.