Configurando CA en clientes desde consola
Contenido |
Resumen
Administración de Autoridades Certificadores desde consola para navegadores y sistema
Introducción
En nuestro argot decimos "agregar el certificado"; para ser un poco más específicos, a lo que nos referimos es a configurar la confianza en una Autoridad Certificadora al agregar su certificado en nuestro sistema, o, sobre todo, en el navegador. Esto nos permite confiar en todos los certificados que dicha autoridad firma, por lo que agregar una CA permite ahorrarse el trabajo de agregar los certificados digitales que podrían identificar a cada servidor.
Esta guía pretender ser la base para la automatización de estas tarea mediante scripts, pero bien pueden usarse para configuración en remoto desde consola.
Procedimiento
Administrando CA de firefox desde consola
Debemos tener instalado el paquete libnss3-tools
apt-get install libnss3-tools
Firefox almacena sus certificados en $HOME/.mozilla/firefox/<cadena-aleatoria>.default/{cert8.db,key3.db}. Nos referimos a ellos con la opción -d /home/mafi/.mozilla/firefox/<cadena-aleatoria>.default/
Seamos un poco didácticos. Una de las razones de más peso para tener que agregar una CA es el servidor proxy. Es posible que el proxy de su establecimiento TODO: Acá falta una buena explicación al respecto. Digamos que lo habíamos configurado, pero después de un tiempo han decidido cambiarlo:
Listando certificados disponibles
certutil -d /home/mafi/.mozilla/firefox/a5rehbgu.default/ -L Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI Google Internet Authority G3 ,, DigiCert SHA2 Extended Validation Server CA ,, Go Daddy Secure Certificate Authority - G2 ,, mafi DigiCert SHA2 High Assurance Server CA ,, thawte SHA256 SSL CA ,, COMODO RSA Organization Validation Secure Server CA ,, Amazon ,, DigiCert SHA2 Secure Server CA ,, Symantec Class 3 Secure Server CA - G4 ,, RapidSSL SHA256 CA ,, GlobalSign Organization Validation CA - SHA256 - G2 ,, Symantec Class 3 ECC 256 bit SSL CA - G2 ,, Let's Encrypt Authority X3 ,, Gandi Standard SSL CA 2 ,, Symantec Class 3 Secure Server SHA256 SSL CA ,, Symantec Class 3 EV SSL CA - G3 ,, COMODO RSA Domain Validation Secure Server CA ,, Camerfirma Corporate Server II - 2015 ,, Trustwave Organization Validation SHA256 CA, Level 1 ,, GlobalSign Domain Validation CA - SHA256 - G2 ,, GlobalSign CloudSSL CA - SHA256 - G3 ,, Symantec Basic DV SSL CA - G2 ,, Starfield Secure Certificate Authority - G2 ,, Entrust Certification Authority - L1K ,, http ,, fw-establecimiento.salud.gob.sv - Ministerio de Salud CT,C,C Google Internet Authority G2 ,, AlphaSSL CA - SHA256 - G2 ,, COMODO ECC Domain Validation Secure Server CA 2 ,, GeoTrust SSL CA - G3 ,, RapidSSL SHA256 CA - G3 ,,
Nos fijamos en fw-establecimiento.salud.gob.sv - Ministerio de Salud: Lo vamos a borrar de la siguiente forma:
certutil -d $HOME/.mozilla/firefox/a5rehbgu.default/ -D -n "fw-establecimiento.salud.gob.sv - Ministerio de Salud"
Ahora, agregamos el certificado fw-establecimiento.crt
. Pues ha funcionado con el navegador abierto, de hecho, al recargar la página ya debería estar funcionando:
certutil -d $HOME/.mozilla/firefox/a5rehbgu.default/ -A -n "fw-establecimiento.salud.gob.sv - Ministerio de Salud" -t "CT,C,C" -i fw-establecimiento.crt
La opción -n
es básicamente el nombre que le asignamos al certificado. Lo mejor es que lo hagamos según los datos del certificado mismo, con la forma
<cn> - <o>
Que puede obtenerse del certificado de la siguiente forma:
openssl x509 -in myCA.crt -text -noout | grep Issuer Issuer: C=SV, ST=San Salvador, L=San Salvador, O=Direcci\xC3\x83\xC2\xB3n Central, OU=Establecimiento, CN=Establecimiento dependiente/emailAddress=vtacius@gmail.com
En este caso, por ejemplo
certutil -d $HOME/.mozilla/firefox/a5rehbgu.default/ -D -n "Establecimiento dependiente - Dirección Central" -t "CT,C,C" -i myCA.crt
Podemos revisar: el navegador ya lo reconoce
Administrando CA de chrome desde consola
Chrome almacena sus certificados en $HOME/.pki/nssdb
. Aparte, se necesita agregar sql:
a la dirección, luego, todos los comandos funcionan de la misma forma:
certutil -d sql:$HOME/.pki/nssdb -A -n "fw-establecimiento.salud.gob.sv - Ministerio de Salud" -t "CT,C,C" -i fw-establecimiento.crt
Administrando CA para el sistema
Cuando se intenta navegar desde la consola, recibimos este mensaje de error.
wget https://www.google.com.sv--2017-08-30 09:22:58-- https://www.google.com.sv/ Resolviendo www.google.com.sv (www.google.com.sv)... 216.58.192.35, 2607:f8b0:4008:805::2003 Conectando con www.google.com.sv (www.google.com.sv)[216.58.192.35]:443... conectado. ERROR: El certificado de “www.google.com.sv” no es confiable. ERROR: El certificado de “www.google.com.sv” no tiene un emisor conocido.
En general, el sistema también tiene su propia forma de almacenar certificados, algo que puede ser un poco confuso, pero cuya administración se facilita un poco con el comando update-ca-certificates
. Básicamente, movemos el certificado de la CA a /usr/local/share/ca-certificates/ y luego corremos el comando.
cp fw-establecimiento.crt /usr/local/share/ca-certificates/
update-ca-certificates Updating certificates in /etc/ssl/certs... 1 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... Adding debian:fw-establecimiento.pem done. done
El comando anterior ahora funciona correctamente
wget https://www.google.com --2017-08-30 09:30:33-- https://www.google.com/ ... Petición HTTP enviada, esperando respuesta... 200 OK Longitud: no especificado [text/html] Grabando a: “index.html” index.html [ <=> ] 10.45K --.-KB/s in 0.008s 2017-08-30 09:30:33 (1.30 MB/s) - “index.html” guardado [10700]