781 votes

Comment puis-je faire accepter à git un certificat auto-signé?

En utilisant Git, y a-t-il un moyen de lui dire d'accepter un certificat auto-signé?

J'utilise un serveur https pour héberger un serveur git mais pour l'instant le certificat est auto-signé.

Quand j'essaye de créer le repo là pour la première fois:

 git push origin master -f
 

J'ai l'erreur:

 error: Cannot access URL     
https://the server/git.aspx/PocketReferences/, return code 22

fatal: git-http-push failed
 

1423voto

Christopher Points 9715

Essayez:

git config http.sslVerify false

Ajouter l' --global drapeau si vous voulez le mettre à false pour chaque dépôt sur votre Mac. À partir de la page de man de git config:

http.sslVerify
    Whether to verify the SSL certificate when fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_NO_VERIFY environment variable.

Quelques autres SSL options de configuration:

http.sslCert
    File containing the SSL certificate when fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_CERT environment variable.

http.sslKey
    File containing the SSL private key when fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_KEY environment variable.

http.sslCertPasswordProtected
    Enable git's password prompt for the SSL certificate. Otherwise OpenSSL will
    prompt the user, possibly many times, if the certificate or private key is encrypted.
    Can be overridden by the GIT_SSL_CERT_PASSWORD_PROTECTED environment variable.

http.sslCAInfo
    File containing the certificates to verify the peer with when fetching or pushing
    over HTTPS. Can be overridden by the GIT_SSL_CAINFO environment variable.

http.sslCAPath
    Path containing files with the CA certificates to verify the peer with when
    fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_CAPATH environment variable.

Par coïncidence, vous pouvez remplacer n'importe quel variable de config en passant -c name=value de git, de sorte que cela fonctionne:

git -c http.sslVerify=false clone https://domain.com/path/to/git

Bien que pour un arrêt temporaire des solutions, je préfère la syntaxe dans le Flux de la réponse.

177voto

Flow Points 8018

Vous pouvez définir à :

GIT_SSL_NO_VERIFY = true git clone https://domain.com/path/to/git

157voto

Adam Spiers Points 4193

Je ne suis pas un grand fan de la les réponses existantes, comme la désactivation des contrôles de sécurité devrait être un dernier recours, et non pas la première solution proposée. Même si vous ne pouvez faire confiance à des certificats auto-signés sur la première réception sans une méthode supplémentaire de vérification, à l'aide du certificat pour la suite des git des opérations au moins vous rend la vie beaucoup plus difficile pour les attaques qui se produisent uniquement après que vous avez téléchargé le certificat. En d'autres termes, si le certificat que vous avez téléchargé est authentique, alors vous êtes bon à partir de ce point. En revanche, si vous il suffit de désactiver la vérification puis vous sont grandes ouvertes à tout type de man-in-the-middle attaque à tout moment.

Pour donner un exemple concret: le célèbre repo.or.cz référentiel fournit un certificat auto-signé. Je peux télécharger ce fichier, de le placer quelque part, /etc/ssl/certs, puis de faire:

# Initial clone
GIT_SSL_CAINFO=/etc/ssl/certs/rorcz_root_cert.pem \
    git clone https://repo.or.cz/org-mode.git

# Ensure all future interactions with origin remote also work
cd org-mode
git config http.sslCAInfo /etc/ssl/certs/rorcz_root_cert.pem

Notez que l'utilisation de locaux git config ici (c'est à dire sans --global) signifie que ce certificat auto-signé n'est fiable que pour ce dépôt, ce qui est agréable. Il est également plus agréable que d'utiliser GIT_SSL_CAPATH , car elle élimine le risque de git faire la vérification par une autre Autorité de certification qui pourrait être compromise.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X