Agregar certificado SSL solo para Github (no todos los certificados del paquete de certificados ca)

13

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-certificatesdesde 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-certificatesya 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.crtcontiene 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)

Martin Vegter
fuente
¿Qué estás tratando de lograr? ¿Contactar con GitHub mediante programación?
Nate W.
¿Has intentado descargar el paquete fuente y luego extraer solo el certificado que deseas?
jayhendren
¿Qué estás usando para acceder a github? alguna herramienta de línea de comandos? ¿un navegador?
lk-

Respuestas:

13

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:

git init [email protected]:yourname/yourrepo.git

Ver también: Github: generar claves ssh , WikiHow

[Editar # 1]

sin verificación de certificados:

GIT_SSL_NO_VERIFY=true git clone https://github.com/p/repo.git

o autenticado

GIT_SSL_NO_VERIFY=true git clone https://user@pass:github.com/p/repo.git

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

cómo tener solo el certificado necesario para acceder a github.com a través de https

  1. Abra su navegador y navegue a https://github.com/ . Haga clic en el nombre verde a la izquierda de https://y haga clic en Certificates. En la Detailspestaña, verá la cadena de certificados, que es:

    DigiCert ...
      DigiCert ...
       github.com ...
    
  2. Exporte cada uno de los certificados DigiCert a un archivo.

  3. copia los archivos a /etc/ssl/certs/
  4. ejecutar c_rehashqué gato a todos los certificadosca-certificates.crt
  5. estás listo.

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
1
Gracias por la sugerencia. Pero me gustaría acceder a githubtravés de https.
Martin Vegter
1

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. :)

Rouben Tchakhmakhtchian
fuente
c_rehashestá haciendo lo que explicaste. Ver c_rehashpágina del manual. Por cierto: no hay necesidad de calcular los hashes. Catting los certs a ca-certificados.crt es suficiente, ya que gitsolo 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