Как полностью отключить проверку SSL-сертификата в Mercurial/TortoiseHg?

Я ищу способ сделать параметр --insecure параметром по умолчанию для любой команды hg \ TortoiseHg.

Пожалуйста, не пишите, что это плохая практика - я знаю о возможных рисках и считаю их вполне приемлемыми.


person Alex Yakunin    schedule 20.03.2011    source источник


Ответы (4)


Установка cacerts в разделе [web] на пустую строку выглядит так же. Из источника:

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

что подтверждает вики:

Иногда бывает целесообразно отключить проверки безопасности, например, при работе с хостами с самозаверяющими сертификатами. Это можно сделать, отключив настройку сертификата ЦС в командной строке:

hg push --config web.cacerts= https://self-signed-host/repo

Таким образом, размещение cacerts=! в разделе [web] вашего глобального hgrc (/etc/mercurial/hgrc в Linux-подобных) приведет вас туда.

person Ry4an Brase    schedule 20.03.2011
comment
Этот подход действительно работает - большое спасибо! Единственная проблема заключается в том, что Hg печатает "warning: something.com certificate with fingerprint 81:....:fe not verified (check hostfingerprints or web.c acerts config setting)" несколько раз в течение hg pull и hg push. - person Alex Yakunin; 22.03.2011
comment
Поэтому я, наконец, решил использовать подход с разделом [hostfingerprints]. - person Alex Yakunin; 22.03.2011
comment
Что еще хорошо с [hostfingerprinst], так это то, что вы можете поместить их в репозиторий hgrc вместо корневого, поэтому это изменение не повлияет на все остальные репозитории. - person Andriy K; 09.04.2012
comment
@AndriyK любой параметр может быть указан в файле .hg/hgrc репо. Никакие настройки не ограничены конкретными местоположениями в различных возможных местоположениях hgrc. - person Ry4an Brase; 09.04.2012
comment
В моем конкретном случае [web] caserts= не работал на уровне репозитория. Может быть, я сделал что-то не так. - person Andriy K; 09.04.2012
comment
Вы как должны web.cacerts=! - person Tom; 25.02.2017
comment
В Mercurial ›= 3.9 web.cacerts=! опция удалена. mercurial-scm.org/wiki/SecureConnections - person Tom; 13.03.2019
comment
Примечание для будущего себя: (должен был добавить это в последний раз) - решил проблему на Android + iOS, отправив модуль python certifi - person Tom; 22.01.2020

Если вашей целью является устранение предупреждений об отпечатках сертификатов во время push/pull, есть лучший способ сделать это. Используйте [hostfingerprints] в .hg/hgrc (или ~/.hgrc — см. комментарии).

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

Это устранит предупреждения без устранения проверок безопасности.

Примечание. Из ваших комментариев к другому ответу я вижу, что вы уже нашли это решение. Я отправляю это в любом случае, если у кого-то еще есть такая же проблема.

person Bruce Alderman    schedule 07.02.2013
comment
Спасибо, что опубликовали это. Это именно то, что мне было нужно. - person Cypher; 31.07.2013
comment
Есть хороший вопрос о получении отпечатков пальцев сервера с помощью bash: stackoverflow.com/a/5165073/1760643 Здесь команда: openssl s_client -connect <host>:<port> < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -in /dev/stdin - person d9k; 19.09.2014
comment
Мой должен был войти в ~/.hgrc - person jeremyjjbrown; 17.12.2014

Для этого вы можете использовать псевдонимы. Добавьте это в свой .hgrc :

[alias]
push = push --insecure

Проблема в том, что вам придется делать это для каждой команды, которую вы хотите использовать, и я предлагаю вам использовать другие имена для ваших псевдонимов, чем по умолчанию.

Насколько мне известно, нет возможности принудительно применить --insecure для всех команд «автоматически».

person krtek    schedule 20.03.2011
comment
Это работает даже при внутреннем вызове Mercurial (без параметра) — из IntelliJ IDEA. - person Dimitar II; 12.01.2017

Задний план

Как указано в ответе Брюса Олдермана, хорошей альтернативой использованию параметра --insecure является простое добавление отпечатков хоста к ~/.hgrc файл. (По-видимому, их запрещено добавлять в .hg/hgrc из-за угроз безопасности.) Однако раздел [hostfingerprints] устарел.

Новые инструкции

Добавьте следующее к ~/.hgrc:

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

где <host> следует заменить именем хоста (без префикса https://), а <hash> следует заменить отпечатком SHA-256 (32 байта, записанных в виде :-разделенных шестнадцатеричных чисел). Вывод следующей команды SHA-256 отпечатка пальца

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

после замены <host> и <port> имеет вид

SHA256 Fingerprint=<hash>

Например, для самозаверяющего сертификата, запущенного с локального компьютера, может быть запись в ~/.hgrc, которая выглядит как

[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

На странице Mercurial о безопасных соединениях есть дополнительная документация.

person Ben Mares    schedule 13.06.2019