Recibo el siguiente error al acceder a Github a través de HTTPS:
error: server certificate verification failed.
CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
Esto se debe a que no tengo ningún certificado /etc/ssl/certs/
. Sé cómo solucionar este problema. Puedo instalar el paquete ca-certificates
desde el repositorio de Debian. Sin embargo, el problema es que esto instalará todos los certificados (miles) que no necesariamente quiero aceptar / confiar.
¿Cómo puedo instalar el certificado solo para Github?
un subproblema / subconsulta
En otra máquina, donde el paquete ca-certificates
ya está instalado y funciona git, he notado que algunos certificados /etc/ssl/certs/
están en un certificado por archivo y otros son muchos certificados en un archivo. El archivo particular que contiene el certificado de Github, /etc/ssl/certs/ca-certificates.crt
contiene más de 150 otros certificados:
$ grep 'BEGIN CERTIFICATE' /etc/ssl/certs/ca-certificates.crt | wc -l
159
¿Cómo puedo encontrar cuál de estos 159 certificados es el que necesito? (aparte de la fuerza bruta: cortar el archivo en mitades y verificar ambas mitades, repetir while n > 1
)
fuente
Respuestas:
Para acceder a su Github, debe hacerlo a través de ssh. Por lo tanto, debe agregar su clave pública ssh a github. Después de eso, puede acceder a github a través de ssh, es decir:
Ver también: Github: generar claves ssh , WikiHow
[Editar # 1]
sin verificación de certificados:
o autenticado
Para mí, todavía no está claro qué está pidiendo, porque sabe que la instalación de los certificados CA solucionará el problema.
[Editar # 2]
Ok, la otra pregunta era
Abra su navegador y navegue a https://github.com/ . Haga clic en el nombre verde a la izquierda de
https://
y haga clic enCertificates
. En laDetails
pestaña, verá la cadena de certificados, que es:Exporte cada uno de los certificados DigiCert a un archivo.
/etc/ssl/certs/
c_rehash
qué gato a todos los certificadosca-certificates.crt
Como dije, no soy amigo de tales acciones porque github puede cambiar las CA en cualquier momento, por lo que siempre resultará en un trabajo adicional.
fuente
github
través dehttps
.Como se sugirió anteriormente, podría usar claves SSH, en lugar de confiar en HTTPS para evitar este problema y, posiblemente, disfrutar de una mejor seguridad.
Dicho esto, creo que lo que está buscando es cómo instalar certificados raíz / CA en / etc / ssl / certs. En pocas palabras, no es suficiente volcar el archivo codificado por PEM en / etc / ssl / certs; también debe calcular el hash de dicho certificado y crear un enlace simbólico en / etc / ssl / certs para ese certificado archivo. El nombre del enlace simbólico tiene que ser el hash sufijado por .0, o si hay una colisión de hash, .1, y así sucesivamente.
Aquí hay una descripción detallada, así como un script de muestra que puede usar para automatizar el proceso: http://wiki.openwrt.org/doc/howto/wget-ssl-certs#adding.root.certificates
Espero que esto sea lo que estaba buscando, pero como dije antes, las claves SSH son probablemente la "mejor" solución. :)
fuente
c_rehash
está haciendo lo que explicaste. Verc_rehash
página del manual. Por cierto: no hay necesidad de calcular los hashes. Catting los certs a ca-certificados.crt es suficiente, ya quegit
solo lee este archivo. Además, el enlace explica cómo obtener manualmente los certificados con openssl. Esto es muy dudoso y provoca a un hombre en el medio ataque. No lo recomendaría