如何在Mercurial / TortoiseHg中完全禁用SSL证书检查?

时间:2011-03-20 05:02:46

标签: ssl mercurial tortoisehg

我正在寻找一种方法,使--insecure选项成为任何hg \ TortoiseHg命令的默认选项。

请不要写这是一种不好的做法 - 我知道可能存在的风险,并认为它们是完全可以接受的。

4 个答案:

答案 0 :(得分:34)

如果您的目标是在推/拉期间消除证书指纹警告,则有更好的方法来执行此操作。使用.hg / hgrc中的[hostfingerprints](或〜/ .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

这将消除警告,而不会取消安全检查。

注意:我从您的评论中看到另一个答案,您已经找到了这个解决方案。无论如何我都会张贴这个,以防其他人遇到同样的问题。

答案 1 :(得分:25)

cacerts部分中的[web]设置为空字符串看起来是一回事。来自the source

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

the wiki confirms

  

有时可能是权宜之计   例如,禁用安全检查   与主人打交道时   自签名证书。这可以   通过禁用CA证书完成   命令行上的配置:

     

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

所以将cacerts=!放在全局hgrc的[web]部分({ - 1}}上的linux-likes)会让你到那里。

答案 2 :(得分:18)

您可以使用aliases来实现这一目标。将其添加到您的.hgrc

[alias]
push = push --insecure

问题是你必须为你想要使用的每个命令执行此操作,我建议你使用不同于别名的名称。

据我所知,没有办法“自动”对所有命令强制执行--insecure

答案 3 :(得分:0)

背景

正如Bruce Alderman's answer中所指出的,使用--insecure选项的一个很好的选择是简单地将主机指纹添加到~/.hgrc文件中。 (由于安全隐患,因此禁止将它们添加到.hg/hgrc中。)[hostfingerprints]部分已被弃用。

新说明

将以下内容添加到~/.hgrc

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

其中<host>应该替换为主机名(不带https://前缀,<hash>应该替换为SHA-256指纹(32字节,写为{{1 }}分隔的十六进制)。以下SHA-256 fingerprint command

的输出
:

替换为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

有关Mercurial's page about secure connections.

的更多文档