我正在寻找一种方法,使--insecure
选项成为任何hg
\ TortoiseHg命令的默认选项。
请不要写这是一种不好的做法 - 我知道可能存在的风险,并认为它们是完全可以接受的。
答案 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')
有时可能是权宜之计 例如,禁用安全检查 与主人打交道时 自签名证书。这可以 通过禁用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
的更多文档