2012-06-15 16:14:17 +0000 2012-06-15 16:14:17 +0000
186
186

¿Cómo se añade una autoridad de certificación (CA) a Ubuntu?

Mi trabajo ha decidido emitir su propia autoridad de certificación (CA) para manejar diferentes aspectos de nuestro trabajo de forma segura sin pagar por los certificados.

  • Firmar criptográficamente los correos electrónicos
  • Cifrar el contenido de los correos electrónicos
  • Hacer que el acceso a cosas como el IRC cliente certificado basado.
  • Revocar las claves de los antiguos empleados automáticamente

Me enviaron un archivo .pem, y no estoy seguro de cómo añadirlo a mi instalación de Ubuntu. Las instrucciones enviadas fueron: “Haciendo doble clic en él en un Mac debería instalarlo.”

¿Cómo procedo? ¿Necesito hacer algo con OpenSSL para crear un archivo .key, .csr, o .crt?

Respuestas (8)

253
253
253
2014-02-19 19:13:09 +0000

Instalar una CA

Copie su certificado en formato PEM (el formato que tiene ----BEGIN CERTIFICATE----) en /usr/local/share/ca-certificates y nómbrelo con una extensión de archivo .crt.

A continuación, ejecute sudo update-ca-certificates.

Avisos: Esta instalación sólo afecta a los productos que utilizan este almacén de certificados. Algunos productos pueden utilizar otros almacenes de certificados; si utiliza esos productos, deberá agregar este certificado de CA a esos otros almacenes de certificados también. Instrucciones de Firefox , Instrucciones de Chrome , Instrucciones de Java )

Probando la CA

Puedes verificar si esto funcionó buscando el certificado que acabas de agregar en /etc/ssl/certs/ca-certificates.crt (que es sólo una larga lista de todas tus CA de confianza concatenadas juntas).

También puedes usar el cliente de OpenSSL intentando conectar con un servidor que sepas que está usando un certificado firmado por la CA que acabas de instalar.

$ openssl s_client -connect foo.whatever.com:443 -CApath /etc/ssl/certs

CONNECTED(00000003)
depth=1 C = US, ST = Virginia, O = "Whatever, Inc.", CN = whatever.com, emailAddress = admin@whatever.com
verify return:1
depth=0 C = US, ST = Virginia, L = Arlington, O = "Whatever, Inc.", CN = foo.whatever.com
verify return:1
---
Certificate chain
 0 s:/C=US/ST=Virginia/L=Arlington/O=Whatever, Inc./CN=foo.whatever.com
   i:/C=US/ST=Virginia/O=Whatever, Inc./CN=whatever.com/emailAddress=admin@whatever.com

... snip lots of output ...

    Key-Arg : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1392837700
    Timeout : 300 (sec)
    Verify return code: 0 (ok)

Lo primero que hay que buscar es la cadena de certificados cerca de la parte superior de la salida. Esto debería mostrar a la CA como la emisora (junto a i:). Esto le indica que el servidor presenta un certificado firmado por la CA que está instalando.

Lo segundo que hay que buscar es el verify return code al final para que se establezca en 0 (ok).

69
69
69
2012-06-15 18:07:40 +0000

De lo anterior, deduzco que la forma preferida de obtener archivos de certificados locales en la tienda de confianza es ponerlos en /usr/local/share/ca-certificates, y luego ejecutar update-ca-certificates. No es necesario tocar /etc/ssl/certs directamente.

15
15
15
2013-10-10 18:46:49 +0000

Las otras respuestas relativas a update-ca-certificates son correctas para las aplicaciones que se leen en el almacén de certificados del sistema. En el caso de Chrome y Firefox, y probablemente en algunos otros, el certificado debe ser puesto en el nssdb, el backend de la biblioteca NSS de Mozilla.

De https://code.google.com/p/chromium/wiki/LinuxCertManagement :

Por ejemplo, para confiar en un certificado raíz de CA para emitir certificados de servidor SSL, use

certutil -d sql:$HOME/. pki/nssdb -A -t “C,” -n <nombre del certificado> -i \N

Donde <certificate nickname> es arbitrario, y <certificate filename> es tu archivo .pem o .crt.

Otras referencias útiles:

15
15
15
2014-04-30 13:39:09 +0000

Tuve el mismo problema, y tuve que copiar el archivo .pem a /usr/local/share/ca-certificates, renombrándolo como .crt. El archivo .cer puede ser fácilmente convertido a .pem, con openssl, por ejemplo, si no tienes el .pem.

Después de copiar el archivo debes ejecutar sudo update-ca-certificates.

11
11
11
2015-09-02 06:19:09 +0000

Para nuevas construcciones basadas en Debian, puede que necesites ejecutar:

sudo dpkg-reconfigure ca-certificates

NOTA: sudo dpkg-reconfigure ca-certificates calls update-ca-certificates internally

Por supuesto, todavía necesitarás copiar el certificado (archivo .crt) a /usr/share/ca-certificates antes de hacer nada de esto :)

6
6
6
2018-04-10 01:00:50 +0000

Basándose en la respuesta de dwmw2, puedes decir a las aplicaciones que usan NSS para su gestión de certificados que usen el almacén de confianza del sistema.

libnss3 por defecto se envía con un conjunto de certificados CA raíz de sólo lectura (libnssckbi.so), por lo que la mayoría de las veces necesitas añadirlos manualmente tú mismo al almacén de confianza del usuario local situado en $HOME/.pki/nssdb. p11-kit ofrece un sustituto de libnssckbi.so que actúa como un adaptador para los certificados raíz de todo el sistema instalados en /etc/ssl/certs.

Editar:

Parece que hay más versiones de libnssckbi.so por ahí que sólo en libnss3. Lo siguiente es un script para encontrarlas todas, hacer una copia de seguridad y reemplazarlas con enlaces a p11-kit:

sudo apt-get update && sudo apt-get install -y p11-kit libnss3
find / -type f -name "libnssckbi.so" 2>/dev/null | while read line; do
    sudo mv $line ${line}.bak
    sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so $line
done

Instrucciones originales:

Para ello, instalar p11-kit y libnss3 (si no están ya instalados):

sudo apt-get update && sudo apt-get install -y p11-kit libnss3

Luego hacer una copia de seguridad del libnssckbi.so existente proporcionado por libnss3:

sudo mv /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so.bak

Finalmente, cree el enlace simbólico:

sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so

Para confirmar que funcionó, puede ejecutar ll /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so y debería mostrar el enlace:

lrwxrwxrwx 1 root root 49 Apr 9 20:28 /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so -> /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so

Ahora, si añade un certificado al almacén de CA usando update-ca-certificates, esos certificados estarán ahora disponibles para aplicaciones que usen NSS (libnss3) como Chrome.

3
3
3
2016-12-12 12:36:34 +0000

Como se ha señalado, varias aplicaciones que utilizan la NSS tienen su propio almacén de certificados. Tal y como están las cosas en Ubuntu, tienes que usar manualmente certutil para añadir tus CAs para cada aplicación, para cada usuario.

En otras distribuciones como Fedora, este tipo de cosas sólo Works™ y deberías presentar un error contra cualquier aplicación que no confíe automáticamente en las CAs que instales con update-ca-trust.

Puedes arreglar esto en Ubuntu también instalando el paquete p11-kit-modules y luego reemplazando el módulo NSS built-in trust roots con p11-kit-trust.so, haciendo un enlace simbólico por ejemplo de /usr/lib/firefox/libnssckbi.so a /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so

Entonces obtendrás las raíces de confianza configuradas del sistema, no algunas de código duro. Note que Ubuntu envía múltiples _diferentes copias de esa librería libnssckbi.so con las raíces de confianza codificadas en duro, ¡y usted tiene que reemplazarlas todas!

cf. https://bugs.launchpad.net/ubuntu/+source/nss/+bug/1647285

1
1
1
2018-01-02 12:58:09 +0000

Una respuesta seriamente estúpida para agregar aquí, pero había pasado 2 horas yendo y viniendo con certutils en linux… Estaba seguro de que todo era correcto:

hutber@hutber-mint /var/www/asos-mvt-framework $ certutil -L -d sql:${HOME}/.pki/nssdb

Certificate Nickname Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

anyproxy CT,, 
rootCA CT,, 
myasos CT,,

Pero aún así, en el cromo nada funcionaba. Intenté todo, al final…

Restarting Chrome

fue la clave de mi éxito después de seguir: Steven Monday’s advice