TLDR:
hostname=XXX
port=443
trust_cert_file_location=`curl-config --ca`
sudo bash -c "echo -n | openssl s_client -showcerts -connect $hostname:$port -servername $hostname \
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 CA de su sistema operativo. Lo que debe hacer para evitar el problema en su computadora es decirle que confíe en ese certificado, si no tiene ningún motivo para sospechar de él.
Debe verificar el certificado web utilizado para su servidor gitLab y agregarlo a su </git_installation_folder>/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 el navegador, wget y curl, pero falla con git ", o en esta publicación de blog .
Compruebe la configuración de un GitLab, en cuestión de 4272 .
Para obtener ese certificado (que necesitaría agregar a su curl-ca-bundle.crt
archivo), escriba a:
echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpsGitlabPort \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
(con ' yourserver.com
' ser el nombre de su servidor GitLab, y YourHttpsGitlabPort
generalmente es el puerto https 443
)
Para verificar la entidad emisora de certificados (entidad emisora de certificados), escriba a:
echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpsGilabPort \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' \
| openssl x509 -noout -text | grep "CA Issuers" | head -1
Nota: Valeriy Katkov sugiere en los comentarios agregar una -servername
opción al comando openssl, de lo contrario, el comando no se muestra certificado para www.github.com en el caso de Valeriy.
openssl s_client -showcerts -servername www.github.com -connect www.github.com:443
Findekano agrega en los comentarios :
para identificar la ubicación de curl-ca-bundle.crt
, podría usar el comando
curl-config --ca
Además, vea mi respuesta más reciente " github: la verificación del certificado del servidor falló ": es posible que deba volver a instalar 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
curl-config --ca
devuelto/etc/ssl/certs/ca-certificates.crt
, que es donde tuve que agregar el certificado. Aparte de eso, esta respuesta fue la primera información que me señaló en la dirección correcta con este problemawhich git
.curl-config --ca
, pero no me devolvieron nada.Abra su terminal y ejecute el siguiente comando:
Funciona para mí y estoy usando el sistema Linux.
fuente
git config --global http.sslverify false
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:
Puede considerar instalar NTP para sincronizar automáticamente la hora del sistema con servidores de tiempo de Internet confiables del grupo NTP global . Por ejemplo, para instalar en Debian / Ubuntu:
fuente
git
por decir, es el intercambio SSL subyacente. Git está construido con soporte SSL.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:
fuente
Tuve el mismo problema Causado por la autoridad de certificación auto emitida. Lo resolvió agregando el archivo .pem a / usr / local / share / ca-certificados / y llamando
PD: el archivo pem en la carpeta ./share/ca-certificates DEBE tener la extensión .crt
fuente
Comprueba 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 debe sincronizarse solo.
Finalmente ingrese el comando clonar nuevamente.
fuente
debería decirte dónde está el problema. En mi caso, se debió a que cURL no admitía certificados PEM cuando se creó contra NSS, debido a que ese soporte no era la línea principal en NSS ( # 726116 # 804215 # 402712 y más ).
fuente
GIT_CURL_VERBOSE
. No lo mencioné en mi respuesta. +1O simplemente ejecute este comentario para agregar el Certificado del servidor a su base de datos:
Luego haz git clone nuevamente.
fuente
Me equivoqué con mis archivos CA mientras configuraba el proxy de goagent. No se pueden extraer datos de github y obtener la misma advertencia:
use el método de Vonc, obtenga el certificado de github y póngalo en /etc/ssl/certs/ca-certificates.crt, problema resuelto.
fuente
no es necesario configurar la verificación git ssl para que sea 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.
Simplemente agregue el texto completo del certificado intermedio (toda la cadena de CA faltante y certificado intermedio) a
funciona sin ejecutar el
update-ca-certificates
.Lo mismo ocurre con los certificados generados manualmente, solo agregue el texto del certificado de CA.
Al final: Empuje exitoso: todo está actualizado
fuente
Lo que hice para resolver este problema en el terminal (Ubuntu 18.04):
Tengo dos trozos de trozos de certificado. Y copié los fragmentos de certificado en mi archivo de certificado a
/etc/ssl/certs/ca-certificates.crt
.fuente
---BEGIN CERTIFICATE---
y--- END CERTIFICATE ---
?Instalé Xubuntu en una Raspberry pi 2, encontré el mismo problema con el tiempo, ya que NTP y la sincronización automática del servidor estaban apagadas (o no instaladas). Obtener NTP
y cambie la "Hora y fecha" de "Manual" a "Mantener sincronizado con los servidores de Internet"
fuente
Finalmente, agregue http.sslverify a su .git / config.
fuente
git config http.sslVerify false
. ¿Está sugiriendo editar la configuración de Git por repositorio, no globalmente como lo sugiere @ romain-vdk?Lo primero que debe verificar es el permiso de archivo de
/etc/ssl
y/etc/ssl/certs
.Cometí el error de eliminar los permisos de archivo (o eliminar los
rm -rf /etc/ssl/*
directorios SSL ) al usar elssl-cert
nombre / ID del grupo mientras trabajaba en mi herramienta de administración de autoridad de certificación .Fue entonces cuando noté exactamente el mismo mensaje de error
wget
ycurl
las herramientas del navegador CLI:Una vez que traje el permiso de archivos
/etc/ssl
y/etc/ssl/cert
directorioso+rx-w
, esas herramientas del navegador CLI comenzaron a respirar un poco más fácil:También tuve que recrear el subdirectorio Java y reconstruir los directorios de certificados de Trusted CA:
y la costa estaba despejada.
fuente
Acabo de encontrar el mismo problema con un repositorio git que siempre funciona para mí. El problema fue que accedí a través del acceso WiFi público, que redirige a un portal cautivo en la primera conexión (por ejemplo, para mostrar anuncios y aceptar tos).
fuente
Copie el certificado y el paquete en un archivo .crt y asegúrese de que haya una línea en blanco entre los certificados en el archivo.
Esto funcionó para mí en un servidor GitLab después de probar todo en Internet.
fuente