【问题标题】:TeamCity and Mercurial httpsTeamCity 和 Mercurial https
【发布时间】:2014-09-26 15:27:23
【问题描述】:
我尝试通过 https 从 TeamCity 连接到 Mercurial 存储库。
但我不能,因为出现错误:
标准错误:中止:错误:_ssl.c:577:错误:14090086:SSL
例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败。
如何禁用 TeamCity 的证书验证?
或者我该如何解决这个问题?
我曾尝试从 IE 加载证书并将其传递到 Mercurial 的 cer 文件中,但这并不能解决我的问题。
【问题讨论】:
标签:
ssl
https
mercurial
continuous-integration
teamcity
【解决方案1】:
只有在将 mercurial.ini 放入目录 C:\Windows\System32\config\systemprofile 后,我才能解决我的问题。
.hgrc 的编辑不生效。只需将 mercurial.ini 放入 C:\Windows\System32\config\systemprofile 并将加载的证书添加到 cacept.pem 即可解决我的问题。
【解决方案2】:
比禁用证书验证(如果可能)更好的是让 Mercurial 知道您信任该证书。 (这是特定于 Windows 的答案)。
我多年来一直想念的是,即使您将证书导入受信任的根证书颁发机构,这也不会影响本地系统帐户,如果您设置了 TeamCity 在该帐户下运行它可以作为服务运行。
让本地系统帐户信任证书的完整步骤在 this answer 中,但我将在此处简要复制它们:
首先,获取证书的副本。您可以从所有主要浏览器将其导出到文件中。
然后,从开始菜单运行 mmc.exe。添加证书管理单元。如果 TeamCity 作为本地系统帐户运行,您希望管理“本地计算机”证书。如果 TeamCity 以普通用户身份运行,您需要管理用户证书。
导航到“受信任的根证书颁发机构”。然后点击“Action > All Tasks > Import”,导入证书文件。
最后一点:您可以使用来自PSTools 的 psexec.exe 作为本地系统运行 powershell,并在返回 TeamCity 之前测试一切是否正常:(Reference)
psexec -i -s Powershell.exe