web-dev-qa-db-fra.com

Comment désactiver complètement les vérifications de certificats SSL dans Mercurial / TortoiseHg?

Je cherche un moyen de faire --insecure option la valeur par défaut pour toute commande hg\TortoiseHg.

S'il vous plaît, n'écrivez pas, c'est une mauvaise pratique - je suis conscient des risques possibles et je considère qu'ils sont entièrement acceptables.

41
Alex Yakunin

Définition de cacerts dans le [web] la section de la chaîne vide semble être la même chose. De la source :

if cmdoptions.get('insecure', False):
    ui.setconfig('web', 'cacerts', '!', '--insecure')

qui le wiki confirme :

Parfois, il peut être utile de désactiver les contrôles de sécurité, par exemple lorsque vous traitez avec des hôtes avec des certificats auto-signés. Cela peut être fait en désactivant la configuration du certificat CA sur la ligne de commande:

hg Push --config web.cacerts = https: // hôte/repo auto-signé

Donc, mettre cacerts=! dans le [web] section de votre hgrc global (/etc/Mercurial/hgrc sur linux-likes) vous y amènera.

25
Ry4an Brase

Si votre objectif est d'éliminer les avertissements des empreintes digitales des certificats pendant le push/pull, il existe un meilleur moyen de le faire. Utilisez les [empreintes digitales de l'hôte] dans .hg/hgrc (ou ~/.hgrc - voir les commentaires).

[hostfingerprints]
server.example.org = 38:76:52:7c:87:26:9a:8f:4a:f8:d3:de:08:45:3b:ea:d6:4b:ee:cc

Cela éliminera les avertissements sans éliminer les contrôles de sécurité.

Note: Je vois de vos commentaires à une autre réponse que vous avez déjà trouvé cette solution. Je poste quand même au cas où quelqu'un d'autre aurait le même problème.

34
Bruce Alderman

Vous pouvez utiliser alias pour y parvenir. Ajoutez ceci à votre .hgrc:

[alias]
Push = Push --insecure

Le problème est que vous devrez le faire pour chaque commande que vous souhaitez utiliser et je vous suggère d'utiliser des noms différents pour vos alias que ceux par défaut.

Pour autant que je sache, il n'y a aucun moyen d'appliquer --insecure pour toutes les commandes "automatiquement".

18
krtek

Contexte

Comme indiqué dans réponse de Bruce Alderman , une bonne alternative à l'utilisation du --insecure L'option consiste simplement à ajouter les empreintes digitales de l'hôte à ~/.hgrc fichier. (Il est vraisemblablement interdit de les ajouter à .hg/hgrc en raison de risques de sécurité.) Le [hostfingerprints] la section est cependant obsolète.

Nouvelles instructions

Ajoutez ce qui suit à ~/.hgrc:

[hostsecurity]
<Host>:fingerprints=sha256:<hash>

<Host> doit être remplacé par le nom d'hôte (sans le https:// préfixe) et <hash> doit être remplacé par l'empreinte SHA-256 (32 octets, écrite comme :- hexadécimal séparé). La sortie de ce qui suit commande d'empreinte digitale SHA-256

openssl s_client -connect <Host>:<port> < /dev/null 2>/dev/null | openssl x509 -fingerprint -sha256 -noout -in /dev/stdin

après avoir remplacé <Host> et <port> est de la forme

SHA256 Fingerprint=<hash>

Par exemple, pour un certificat auto-signé exécuté sur la machine locale, on peut avoir une entrée dans ~/.hgrc qui ressemble

[hostsecurity]
localhost:fingerprints=sha256:DD:30:5A:9B:2C:E1:59:7E:46:C4:42:D3:41:34:03:17:2A:CF:50:E8:DF:78:E6:2E:C9:42:D9:9A:C9:58:AC:52

Il y a plus de documentation sur la page de Mercurial sur les connexions sécurisées.

1
Ben Mares