Pregunta:
He generado un certificado autofirmado para mi servidor de compilación y me gustaría confiar globalmente en el certificado de mi máquina, ya que creé la clave yo mismo y estoy harto de ver advertencias.
Estoy en Ubuntu 12.04. ¿Cómo puedo tomar el certificado y confiar globalmente en él para que los navegadores (Google Chrome), las utilidades CLI (wget, curl) y los lenguajes de programación (Python, Java, etc.) confíen en la conexión a https://mysite.com sin preguntar? ¿preguntas?
Respuesta:
La respuesta simple a esto es que prácticamente cada aplicación lo manejará de manera diferente.
Además, OpenSSL y GNUTLS (las bibliotecas de procesamiento de certificados más utilizadas para manejar certificados firmados) se comportan de manera diferente en el tratamiento de los certificados, lo que también complica el problema. Además, los sistemas operativos utilizan diferentes mecanismos para utilizar la "CA raíz" utilizada por la mayoría de los sitios web.
Aparte de eso, pongamos a Debian como ejemplo. Instale el paquete de ca-certificates
:
apt-get install ca-certificates
Luego, copie la mitad pública de su certificado de CA que no es de confianza (el que usa para firmar su CSR) en el directorio de certificados de CA (como raíz):
cp cacert.crt /usr/share/ca-certificates
NOTA: El certificado debe tener la extensión .crt
para que pueda ser recogido.
Y consiga que reconstruya el directorio con su certificado incluido, ejecútelo como root:
dpkg-reconfigure ca-certificates
y seleccione la opción ask
, desplácese hasta su certificado, márquelo para su inclusión y seleccione Aceptar.
La mayoría de los navegadores utilizan su propia base de datos de CA, por lo que se deben utilizar herramientas como certutil
para modificar su contenido (en Debian que se proporciona con el paquete libnss3-tools
). Por ejemplo, con Chrome ejecuta algo como:
certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n "My Homemade CA" -i /path/to/CA/cert.file
Firefox le permitirá buscar el certificado en el disco, reconocerlo como un archivo de certificado y luego le permitirá importarlo a la lista de CA raíz.
La mayoría de los otros comandos, como los interruptores de línea de comando curl
take, puede usar para apuntar a su CA,
curl --cacert /path/to/CA/cert.file https://...
o descartar la validación SSL por completo
curl --insecure https://...
El resto necesitará una investigación individual si el truco como los ca-certificates
no lo clasifica para esa aplicación en particular.