2011-11-14 131 views
6

我想使用可通过https访问的git repo,Https服务器具有自签名证书。而试图与Eclipse +例如:It克隆回购,我总是得到一个错误:egit使用自签名证书,https

https://host/path:无法打开混帐上传包 sun.security.validator.ValidatorException:PKIX路径建设失败: sun.security。 provider.certpath.SunCertPathBuilderException:无法找到 有效证明路径请求的目标

是否可以绕过这个问题?我用export GIT_SSL_NO_VERIFY=1命令跳过与控制台客户端的ssl验证。这个技巧在eclipse中不起作用。

感谢,

Hubi

回答

11

你也可以设置例如:It忽略服务器验证。在Eclipse中,转到Window - > Preferences。

从那里去团队 - > Git的 - >配置

单击 “新建项目”

重点:http.sslVerify 值:假

单击 “确定”

点击“确定”

欲了解更详细的方法,请查看我的博客文章: http://www.pur-logic.com/2012/04/21/egit-self-signed-certificate/

+0

如果使用IP地址而不是主机名,这是否是同样的问题? – Chris

+2

正如在许多与“使用'http.sslVerify:false'”自签名证书和git“主题相关的答案中提到的,来自安全PoV **的**可怕的做法并且应该是绝对的最后手段,尤其是有其他选项。 这个答案解决了这个问题,并为其他人开放,通常认为更严重。但是,嘿,黑客也得吃,对吧? :) 这里的根本问题是自签名证书不被egit/eclipse使用的java信任。解决方案只是将其注册到cacert中。 – shturec

+0

+1 @shturec!您不是在禁用一个站点的SSL验证,而是在您执行此操作时禁用所有站点。这是一个可怕的,非常不安全的解决方案。 –

5

你必须输入该证书到密钥存储(或者在你的JDK目录的默认密钥库的cacerts或您指定一个与参数-Djavax.net.ssl.trustStore) 。

+0

由不同的作者选择的答案这一个不开放的安全漏洞,并应首选之一,因为它是一个解决方案的确切问题在这里 - egit使用的java不能将证书识别为可信。 – shturec

0

FAQ of CAcert提供了命令行的密钥工具:

keytool -keystore $/PATH/TO/CACERTS/KEYSTORE -storepass changeit -import -trustcacerts -v -alias cacertclass1 -file root.crt 
  • 最终,你必须忽略-trustcacerts导入正常 证书。
  • -alias也可能是不必要的
0

我也遇到了一些麻烦,但是有一个不同的故事。 Git仓库的主机名与证书的主机名不匹配。解决方案是更改证书以匹配主机名。

+0

你能解释你是怎么做到的吗?我认为这也是我的问题 –