Entonces, en la escuela necesitamos instalar un certificado para acceder a los sitios https. En Firefox, puedo importar el certificado. Sin embargo, no puedo hacerlo con la línea de comando. Por ejemplo, corriendo git push
obtengo:
fatal: unable to access 'https://github.com/user/repo': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
¿Cómo importo un certificado para eliminar esto? La importación debe poder autenticarse por mí. Además, es un .cer
archivo, por lo que la respuesta .crt
no funcionará. Además, no quiero seguir pasos sobre cómo configurar git, como ya los hice. Quiero saber si es posible hacer eso. ¿O puedo simplemente desactivar git
totalmente la autenticación con el comando y hacer que ignore certificados como este?la respuestaaquí dice? Además, no quiero que se cargue la página web, he configurado Firefox para que lo haga. Quiero que el git push
comando proporcione una salida estándar como:
[master 630d087] message
1 file changed, 93 insertions(+), 80 deletions(-)
rewrite somefile (84%)
Counting objects: 9, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 978 bytes | 0 bytes/s, done.
Total 5 (delta 2), reused 0 (delta 0)
To https://github.com/User/Repo.git
851ae39..630d087 master -> master
Nota: descubrí que es git config --global http.sslverify false
. Pero me gustaría ver una respuesta para todo, no sólo un truco de git.
Respuesta1
TL;DR
Para que todo funcione y no solo su navegador, debe agregar ese certificado de CA al repositorio de CA confiable del sistema.
En ubuntu:
- Vaya a /usr/local/share/ca-certificates/
- Cree una nueva carpeta, es decir, "sudo mkdir school".
- Copie el archivo .crt en la carpeta de la escuela.
- Asegúrese de que los permisos estén bien (755 para la carpeta, 644 para el archivo)
- Ejecute "sudo update-ca-certificates"
Por qué
Permítanme explicarles también lo que está pasando, para que los otros carteles vean por qué no necesitan ningún certificado para usar Github a través de HTTPS.
Lo que sucede allí es que su escuela está interceptando todas las comunicaciones SSL, probablemente para monitorearlas.
Para hacer eso, lo que hacen es en esencia un ataque de "hombre en el medio", y debido a eso, su navegador se queja con razón de que no puede verificar el certificado de github. El proxy de su escuela está obteniendo el certificado de github y, en su lugar, proporciona su propio certificado.
Cuando su navegador intenta verificar el certificado proporcionado por la escuela con la CA que firmó el certificado de github, falla con razón.
Entonces, para que la conexión SSL funcione en la escuela, debes aceptar conscientemente ese ataque "MITM". Y lo hace agregando el certificado CA de la escuela como uno confiable.
Cuando confía en esa CA de la escuela, su verificación del certificado de github falso funcionará, ya que la CA de la escuela verificará el certificado de github falso.
Tenga en cuenta que la conexión SSL ya no es segura ya que el administrador de su escuela podrá interceptar todas sus conexiones cifradas.
Respuesta2
El ca-certificates
paquete tiene las instrucciones en su README.Debian
:
Si desea instalar autoridades de certificación locales en las que se confíe implícitamente, coloque los archivos de certificado como archivos únicos que terminen en
.crt
y/usr/local/share/ca-certificates/
vuelva a ejecutarlosupdate-ca-certificates
.
Tenga en cuenta que menciona un directorio diferente de las otras respuestas aquí:
/usr/local/share/ca-certificates/
Después de copiar, /usr/local/share/ca-certificates/
puede actualizar los permisos del certificado y ejecutarlo sudo update-ca-certificates
como se menciona en la respuesta de Telegraphers. Verá en el resultado que se agregó el certificado.
Respuesta3
Las extensiones .crt, .pem y .cer son intercambiables, solo cambia la extensión del nombre del archivo, tienen la misma forma. Prueba esto:
$ sudo cp mycert.cer /usr/share/ca-certificates/mycert.pem
$ sudo dpkg-reconfigure ca-certificates
$ sudo update-ca-certificates
$ git config --global http.sslCAInfo /usr/share/ca-certificates/mycert.pem
Respuesta4
Utilizo la siguiente recopilación de respuestas anteriores:
sudo -i
echo | openssl s_client -showcerts -servername site.example.com -connect example.com:443 2>/dev/null | awk '/-----BEGIN CERTIFICATE-----/, /-----END CERTIFICATE-----/' >> /usr/local/share/ca-certificates/ca-certificates.crt
update-ca-certificates
A menudo, ambos site.example.com
y example.com
son los mismos nombres de host.