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 correos electrónicos
- Cifrar contenidos de correo electrónico
- Acceda a cosas como la empresa basada en el certificado de cliente IRC .
- Revocar automáticamente las claves de ex empleados
Me enviaron un .pem
archivo y no estoy seguro de cómo agregarlo a mi instalación de Ubuntu. Las instrucciones enviadas fueron: "Hacer doble clic en una Mac debería instalarlo".
¿Cómo procedo? ¿Necesito hacer algo con OpenSSL para crear una .key
, .csr
o .crt
presentar?
ubuntu
certificate
trusted-root-certificates
Xeoncross
fuente
fuente
Respuestas:
Instalar una CA
Copie su certificado en formato PEM (el formato que tiene
----BEGIN CERTIFICATE----
)/usr/local/share/ca-certificates
y nómbrelo con una.crt
extensión de archivo.Entonces corre
sudo update-ca-certificates
.Advertencias: esta instalación solo afecta a los productos que utilizan este almacén de certificados. Algunos productos pueden usar otras tiendas de certificados; si usa esos productos, también deberá agregar este certificado de CA a esos otros almacenes de certificados. ( Instrucciones de Firefox , Instrucciones de Chrome , Instrucciones de Java )
Prueba de CA
Puede verificar si esto funcionó buscando el certificado que acaba de agregar
/etc/ssl/certs/ca-certificates.crt
(que es solo una larga lista de todas las CA de confianza concatenadas juntas).También puede usar s_client de OpenSSL intentando conectarse a un servidor que sabe que está usando un certificado firmado por la CA que acaba de instalar.
Lo primero que debe buscar es la cadena de certificados cerca de la parte superior de la salida. Esto debería mostrar la CA como el emisor (al lado de
i:
). Esto le indica que el servidor presenta un certificado firmado por la CA que está instalando.En segundo lugar, busque
verify return code
al final para establecer0 (ok)
.fuente
crt
comentario de la extensión, ese fue el secreto para conseguir este trabajo para mí, me dieron un certificado con unacert
extensión y estaba confundido sobre por qué nada funcionaba.s_client
no envía SNI de forma predeterminada y el servidor puede necesitar SNI, especialmente si admite hosts / sitios virtuales con diferentes certificados; para este caso agregar-servername foo.whatever.com
. O si se trata de un uso del servidor web (versiones modernas de)curl
o dewget
SNI automáticamente.man update-ca-certificados :
De lo anterior, deduciría que la forma preferida de obtener archivos de certificados locales en el almacén de confianza es colocarlos
/usr/local/share/ca-certificates
y luego ejecutarlosupdate-ca-certificates
. No necesita tocar/etc/ssl/certs
directamente.fuente
--fresh
para que funcione. egupdate-ca-certificates --fresh
Tuve el mismo problema y tuve que copiar el
.pem
archivo/usr/local/share/ca-certificates
, renombrándolo como.crt
. El.cer
archivo se puede convertir fácilmente.pem
, con openssl, por ejemplo, si no tiene el.pem
.Después de copiar el archivo debe ejecutarlo
sudo update-ca-certificates
.fuente
openssl x509 -inform DER -in certificate.cer -out certificate.crt
Las otras respuestas relacionadas
update-ca-certificates
son correctas para las aplicaciones que leen del almacén de certificados del sistema. Para Chrome y Firefox, y probablemente algunos otros, el certificado debe colocarse en el nssdb, el back-end de la biblioteca NSS de Mozilla.Desde https://code.google.com/p/chromium/wiki/LinuxCertManagement :
Donde
<certificate nickname>
es arbitrario, y<certificate filename>
es su archivo .pem o .crt.Otras referencias útiles:
certutil
página de manual, que describe los parámetros utilizados anteriormente: https://developer.mozilla.org/en-US/docs/NSS_reference/NSS_tools_:_certutilfuente
mkdir -p $HOME/.pki/nssdb && chmod -R 0700 $HOME/.pki && certutil -d sql:$HOME/.pki/nssdb -N --empty-password
Para las versiones más recientes basadas en Debian, es posible que deba ejecutar:
NOTA: sudo dpkg-reconfigure ca-certificate llama a update-ca-certificados internamente
Por supuesto, aún deberá copiar el certificado (archivo .crt) en / usr / share / ca-certificados antes de hacer algo de esto :)
fuente
Sobre la base de la respuesta de dwmw2 , puede decirle a las aplicaciones que usan NSS para su administración de certificados que usen el almacén de confianza del sistema.
libnss3
de forma predeterminada se envía con un conjunto de certificados de CA raíz (libnssckbi.so
) de solo lectura , por lo que la mayoría de las veces debe agregarlos manualmente al almacén de confianza del usuario local ubicado en$HOME/.pki/nssdb
.p11-kit
ofrece un reemplazo directolibnssckbi.so
que actúa como un adaptador para los certificados raíz instalados en todo el sistema/etc/ssl/certs
.Editar:
Parece que hay más versiones de
libnssckbi.so
ahí afuera que solo adentrolibnss3
. El siguiente es un script para encontrarlos a todos, respaldarlos y reemplazarlos con enlaces ap11-kit
:Instrucciones originales:
Para hacer esto, instale
p11-kit
ylibnss3
(si aún no están instalados):Luego haga una copia de seguridad de la existente
libnssckbi.so
proporcionada porlibnss3
:Finalmente, cree el enlace simbólico:
Para confirmar que funcionó, puede ejecutar
ll /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so
y debería mostrar el enlace:Ahora, si agrega un certificado a la tienda de CA usando
update-ca-certificates
, esos certificados ahora estarán disponibles para aplicaciones que usan NSS (libnss3
) como Chrome.fuente
Como se señaló, varias aplicaciones que usan NSS tienen su propio almacén de certificados. Tal como están las cosas en Ubuntu, debe usarlo manualmente
certutil
para agregar sus CA para cada aplicación, para cada usuario.En otras distribuciones como Fedora, este tipo de cosas Just Works ™ y usted deben presentar un error contra cualquier aplicación que no confíe automáticamente en las CA con las que instala
update-ca-trust
.También puede solucionar esto en Ubuntu instalando el
p11-kit-modules
paquete y luego reemplazando el módulo de raíces de confianza incorporado de NSS conp11-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
A continuación, va a obtener las raíces de confianza configurado del sistema, no algunos no modificables queridos. Tenga en cuenta que Ubuntu envía varias copias diferentes de esa biblioteca libnssckbi.so con las raíces de confianza codificadas, ¡y debe reemplazarlas todas!
cf. https://bugs.launchpad.net/ubuntu/+source/nss/+bug/1647285
fuente
sudo find / -type f -name "libnssckbi.so"
, se encuentralibnssckbi.so
en tres lugares:/usr/lib/thunderbird/
,/usr/lib/firefox/
, y/usr/lib/x86_64-linux-gnu/nss/
. Entonces, ¿estás diciendo que debería vincular laslibnssckbi.so
tres carpetas a esasp11-kit-trust.so
?/usr/lib/x86_64-linux-gnu/nss/libnssckbi.so
->/usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so
funcionó como un CHARM. Pude agregar un certificado/usr/local/share/ca-certificates
, ejecutarsudo update-ca-certificates
y PRESTO, Chrome comenzó a aceptar los certificados autofirmados.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 estaba correcto:
Pero aún así, en cromo nada funcionaba. Intenté todo, al final ...
Restarting Chrome
Fue la clave de mi éxito después de seguir: el consejo de Steven Monday
fuente