la verificación del certificado del servidor falló. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

Puedo avanzar por proyecto de clonación utilizando ssh, pero no funciona cuando clono el proyecto con https. muestra mensaje de error como a continuación.

server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none 

TLDR:

 hostname=XXX port=443 trust_cert_file_location=`curl-config --ca` sudo bash -c "echo -n | openssl s_client -showcerts -connect $hostname:$port \ 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' \ >> $trust_cert_file_location" 

Respuesta larga

La razón básica es que su computadora no confía en la autoridad de certificación que firmó el certificado utilizado en el servidor de Gitlab . Esto no significa que el certificado sea sospechoso, pero podría ser autofirmado o firmado por una institución / empresa que no esté en la lista de la lista de CA de su sistema operativo. Lo que tiene que hacer para evitar el problema en su computadora es decirle que confíe en ese certificado, si no tiene ningún motivo para sospechar al respecto.

Debe verificar el certificado web utilizado para su servidor gitLab y agregarlo a su /bin/curl-ca-bundle.crt .

Para verificar si al menos el clon funciona sin verificar dicho certificado, puede configurar:

 export GIT_SSL_NO_VERIFY=1 #or git config --global http.sslverify false 

Pero eso sería solo para pruebas, como se ilustra en ” SSL funciona con navegador, wget y curl, pero falla con git “, o en esta publicación de blog .

Verifique su configuración de GitLab, en el número 4272 .


Para obtener ese certificado (que necesitaría agregar a su archivo curl-ca-bundle.crt ), escriba a:

 echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpGilabPort \ 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' 

(con ‘ yourserver.com ‘ es su nombre de servidor GitLab)

Para verificar la CA (entidad emisora ​​de la autoridad de certificación), escriba a:

 echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpGilabPort \ 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' \ | openssl x509 -noout -text | grep "CA Issuers" | head -1 

Findekano agrega en los comentarios :

para identificar la ubicación de curl-ca-bundle.crt , podrías usar el comando

 curl-config --ca 

Además, consulte mi respuesta más reciente ” github: la verificación del certificado del servidor falló “: es posible que tenga que renunciar a esos certificados:

 sudo apt-get install --reinstall ca-certificates sudo mkdir /usr/local/share/ca-certificates/cacert.org sudo wget -P /usr/local/share/ca-certificates/cacert.org http://www.cacert.org/certs/root.crt http://www.cacert.org/certs/class3.crt sudo update-ca-certificates git config --global http.sslCAinfo /etc/ssl/certs/ca-certificates.crt 

Nota: Esto tiene importantes implicaciones de seguridad.

Abra su terminal y ejecute el siguiente comando:

 export GIT_SSL_NO_VERIFY=1 

Funciona para mí y estoy usando el sistema Linux.

Otra causa de este problema podría ser que su reloj podría estar apagado. Los certificados son sensibles al tiempo.

Para verificar la hora actual del sistema:

 date -R 

Puede considerar instalar NTP para sincronizar automáticamente la hora del sistema con los servidores de tiempo de Internet confiables del conjunto global de NTP . Por ejemplo, para instalar en Debian / Ubuntu:

 apt-get install ntp 

Tenía el mismo problema. Causado por la autoridad de certificación auto emitida. Lo resolvió agregando el archivo .pem a / usr / local / share / ca-certificates / y llamando

 sudo update-ca-certificates 

PS: archivo pem en la carpeta ./share/ca-certificates DEBE tener extensión .crt

Si está utilizando un servidor git dentro de una red privada y está utilizando un certificado autofirmado o un certificado sobre una dirección IP; también puede simplemente usar la configuración global de git para deshabilitar las comprobaciones de ssl:

 git config --global http.sslverify "false" 

Revisa el reloj de tu sistema,

$ date

Si no es correcto, la verificación del certificado fallará. Para corregir el reloj del sistema,

$ apt-get install ntp

El reloj debería sincronizarse.

Finalmente ingrese el comando clon nuevamente.

 GIT_CURL_VERBOSE=1 git [clone|fetch]… 

debería decirle dónde está el problema En mi caso, se debió a que cURL no admitía certificados PEM cuando se comstackba con NSS, debido a que ese soporte no era la línea principal en NSS ( # 726116 # 804215 # 402712 y más ).

O simplemente ejecute este comentario para agregar el Certificado del servidor a su base de datos:

 echo $(echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpGilabPort 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p') >> /etc/ssl/certs/ca-certificates.crt 

Luego haz git clone nuevamente.

Me equivoqué con mis archivos de CA mientras configuraba el proxy de Goagent. No puede extraer datos de github y recibe la misma advertencia:

la verificación del certificado del servidor falló. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

use el método de Vonc, obtenga el certificado de github y póngalo en /etc/ssl/certs/ca-certificates.crt, problema resuelto.

echo -n | openssl s_client -showcerts -connect github.com:443 2> / dev / null | sed -ne ‘/ -BEGIN CERTIFICATE – /, / – END CERTIFICATE- / p’

no hay necesidad de configurar la verificación de git ssl para establecer en falso. Se produce cuando el sistema no tiene todos los certificados de autoridad de CA. La mayoría de las personas que tienen un certificado SSL genuino no tienen el certificado intermedio.

Solo agregue el texto completo del certificado intermedio (cadena completa de CA faltante y certificado intermedio) para

 sudo gedit /etc/ssl/certs/ca-certificates.crt 

funciona sin ejecutar la update-ca-certificates .

Lo mismo ocurre con los certificados generados manualmente, simplemente agregue el texto del certificado de CA.

Al final: empuje exitoso: todo está actualizado

Instalé Xubuntu en una Raspberry pi 2, encontré el mismo problema con el tiempo, ya que NTP y Automatic Server Sync estaban desactivados (o no instalados). Obtener NTP

 sudo apt-get install ntp 

y cambie la “Fecha y hora” de “Manual” a “Mantener sincronizado con los servidores de Internet”

Eventualmente, agregue http.sslverify a su .git / config.

 [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = https://server/user/project.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master [http] sslVerify = false 

Acabo de encontrar el mismo problema con un repository git que siempre me funciona. El problema fue que accedí a él a través de un acceso WiFi público, que redirige a un portal cautivo en la primera conexión (por ejemplo, para mostrar anuncios y aceptarlos).