L'administrateur système d'un projet sur lequel je suis a décidé que SSH est "trop de problèmes"; à la place, il a configuré Git pour qu'il soit accessible via une https://
URL (et une authentification par nom d'utilisateur / mot de passe). Le serveur de cette URL présente un certificat auto-signé, il a donc conseillé à tout le monde de désactiver la validation du certificat. Cela ne me semble pas être une bonne configuration, du point de vue de la sécurité.
Est-il possible de dire à Git que pour X distant (ou mieux, n'importe quel distant dans un référentiel qui commence par https://$SERVERNAME/
), il doit accepter un certificat particulier, et seulement ce certificat? En gros, redoublez le comportement de la clé serveur de SSH.
git
ssl-certificate
zwol
la source
la source
Réponses:
Brièvement:
~/git-certs/cert.pem
fichier (par exemple )git
pour approuver ce certificat à l'aide duhttp.sslCAInfo
paramètreEn plus de détails:
Obtenez un certificat auto-signé du serveur distant
En supposant que l'URL du serveur est
repos.sample.com
et que vous souhaitez y accéder via le port443
.Il existe plusieurs options, comment l'obtenir.
Obtenir un certificat en utilisant openssl
Capturez la sortie dans un fichier
cert.pem
et supprimez tout sauf une partie entre (et y compris)-BEGIN CERTIFICATE-
et-END CERTIFICATE-
Le contenu du fichier résultant ~ / git-certs / cert.pem peut ressembler à ceci:
Obtenez un certificat à l'aide de votre navigateur Web
J'utilise Redmine avec les référentiels Git et j'accède à la même URL pour l'interface utilisateur Web et pour l'accès en ligne de commande git. De cette façon, j'ai dû ajouter une exception pour ce domaine dans mon navigateur Web.
En utilisant Firefox, je suis allé sur, j'ai
Options -> Advanced -> Certificates -> View Certificates -> Servers
trouvé l'hôte auto-signé,Export
je l'ai sélectionné et en utilisant le bouton, j'ai obtenu exactement le même fichier, créé avecopenssl
.Note: j'ai été un peu surpris, il n'y a pas de nom de l'autorité visiblement mentionné. C'est bon.
Avoir le certificat de confiance dans un fichier dédié
Les étapes précédentes aboutiront à avoir le certificat dans un fichier. Peu importe de quel fichier il s'agit tant qu'il est visible par votre git lors de l'accès à ce domaine. j'ai utilisé
~/git-certs/cert.pem
Remarque: si vous avez besoin de plus de certificats auto-signés de confiance, placez-les dans le même fichier:
Cela fonctionnera (mais je ne l'ai testé qu'avec un seul certificat).
Configurer git pour faire confiance à ce certificat
Vous pouvez également essayer de faire cela à l'échelle du système, en utilisant
--system
au lieu de--global
.Et testez-le: vous pourrez désormais communiquer avec votre serveur sans recourir à:
Si vous avez déjà défini votre git sur l'ignorance des certificats SSL, désactivez-le:
et vous pouvez également vérifier que vous avez tout fait correctement, sans fautes d'orthographe:
ce qui devrait lister toutes les variables que vous avez définies globalement. (J'ai mal orthographié http à htt).
la source
Réglages utilisateur OSX.
Suivre les étapes de la réponse Acceptée a fonctionné pour moi avec un petit ajout lors de la configuration sur OSX.
J'ai mis le
cert.pem
fichier dans un répertoire sous mon utilisateur connecté OSX et m'a donc amené à ajuster l'emplacement du certificat de confiance.Configurez git pour faire confiance à ce certificat:
la source