Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Mercurial/TortoiseHg中完全禁用SSL证书检查?_Ssl_Mercurial_Tortoisehg - Fatal编程技术网

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

如何在Mercurial/TortoiseHg中完全禁用SSL证书检查?,ssl,mercurial,tortoisehg,Ssl,Mercurial,Tortoisehg,我正在寻找一种方法,使--unsecure选项成为任何hg\TortoiseHg命令的默认选项 请不要写,这是一个坏的做法-我知道可能的风险,并认为它们是完全可以接受的。< / P > < P >你可以用它来实现这一点。将此添加到您的.hgrc: [alias] push = push --insecure 问题是您必须为每个要使用的命令执行此操作,我建议您为别名使用不同于默认别名的名称 据我所知,没有办法“自动”对所有命令强制执行--不安全的。将[web]部分中的cacerts设置为空字符串

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

请不要写,这是一个坏的做法-我知道可能的风险,并认为它们是完全可以接受的。< / P > < P >你可以用它来实现这一点。将此添加到您的
.hgrc

[alias]
push = push --insecure
问题是您必须为每个要使用的命令执行此操作,我建议您为别名使用不同于默认别名的名称


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

[web]
部分中的
cacerts设置为空字符串看起来是一样的。发件人:

其中:

有时,这样做可能是有利的 例如,禁用安全检查 在与主机打交道时 自签名证书。这可能是 通过禁用CA证书完成 命令行上的配置:

hg push--config web.cacerts=


所以把
cacerts=/etc/mercurial/hgrc
linux likes上)的
[web]
部分中的code>将帮助您实现这一目标。

如果您的目标是在推/拉过程中消除证书指纹警告,那么有一种更好的方法可以做到这一点。使用.hg/hgrc(或~/.hgrc——请参阅注释)中的[hostfingerprints]

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

注意:我从你对另一个答案的评论中看到,你已经找到了这个解决方案。无论如何,我都会发布这篇文章,以防其他人也有同样的问题。

Background 正如中所指出的,使用
--unsecure
选项的一个很好的替代方法是简单地将主机指纹添加到
~/.hgrc
文件中。(由于存在安全风险,可能禁止将它们添加到
.hg/hgrc
[hostfingerprints]
部分已被弃用

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

[hostsecurity]
<host>:fingerprints=sha256:<hash>
替换后的
的形式如下

SHA256 Fingerprint=<hash>

有更多关于此方法的文档,非常感谢!唯一的问题是Hg在
Hg pull
Hg push
期间多次打印
“警告:指纹为81:..:fe的something.com证书未经验证(请检查hostfingerprints或web.c acerts配置设置)”
。因此我最终决定使用
[hostfingerprints]的方法
section.[hostfingerprinst]更棒的是,您可以将它们放在存储库hgrc而不是根目录中,因此此更改不会影响所有rest存储库。在我的特定情况下,
[web]caserts=
在存储库级别上不起作用。可能是我做错了什么。在Mercurial>=3.9web.cacerts=!选项已被删除。谢谢你发布这个。这正是我所需要的。关于使用bash获取服务器指纹,有一个很好的问题:这里的命令:
openssl s_client-connect:/dev/null | openssl x509-fingerprint-noout-in/dev/stdin
Mine必须进入~/.hgrc即使在内部调用Mercurial(没有参数)时也可以工作-来自IntelliJ IDEA。
[hostsecurity]
<host>:fingerprints=sha256:<hash>
openssl s_client -connect <host>:<port> < /dev/null 2>/dev/null | openssl x509 -fingerprint -sha256 -noout -in /dev/stdin
SHA256 Fingerprint=<hash>
[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