Java 带有自签名证书的egit,https

Java 带有自签名证书的egit,https,java,eclipse,git,https,egit,Java,Eclipse,Git,Https,Egit,我想使用可以通过https访问的git repo,https服务器具有自签名证书。我在尝试使用eclipse+egit克隆回购时总是出错: :无法打开git上载包 sun.security.validator.validator异常:PKIX路径生成失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 找到请求目标的有效证书路径 有可能绕过这个问题吗?我使用export GIT\u SSL\u NO\u VERIFY=

我想使用可以通过https访问的git repo,https服务器具有自签名证书。我在尝试使用eclipse+egit克隆回购时总是出错:

:无法打开git上载包 sun.security.validator.validator异常:PKIX路径生成失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 找到请求目标的有效证书路径

有可能绕过这个问题吗?我使用
export GIT\u SSL\u NO\u VERIFY=1
命令跳过控制台客户端的SSL验证。这个技巧对eclipse不起作用

谢谢


Hubi

您必须将该证书导入密钥库(JDK目录中的默认密钥库cacerts或使用参数-Djavax.net.ssl.trustStore指定一个密钥库)。

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

keytool -keystore $/PATH/TO/CACERTS/KEYSTORE -storepass changeit -import -trustcacerts -v -alias cacertclass1 -file root.crt
  • 可能,您必须省略
    -trustcacerts
    才能导入正常的 证书
  • -别名也可能是不必要的

您也可以将eGit设置为忽略服务器验证。在Eclipse中,转到窗口->首选项

从那里转到团队->Git->配置

单击“新建条目”

关键字:http.sslVerify 值:false

单击“确定”

单击“确定”

要了解更详细的方法,请查看我的博客:

我在这方面也遇到了一些麻烦,但故事不同。Git repo的主机名与证书的主机名不匹配。解决方案是将证书更改为与主机名匹配。

对于此用例,我们应该使用
http.sslCAInfo
选项。
然而,该选项的eclipse JGit开发状态已经停滞了很长时间

供参考


如果使用IP地址而不是主机名,这是同样的问题吗?正如在与主题“自签名证书和git”相关的众多答案中所述,使用http
sslVerify:false
是安全PoV的一种可怕做法,应该是绝对的最后手段,特别是还有其他选择。这个答案解决了这个问题,也为其他人打开了大门,而这些人通常被认为更为严重。但是嘿,黑客也得吃东西,对吗?:)这里的根本问题是egit/eclipse使用的java不信任自签名证书。解决办法就是把它加入cacert。你能解释一下你是怎么做到的吗?我认为这也是我的问题。与作者选择的答案不同,这个答案不会打开安全漏洞,应该是首选答案,因为它是解决这里确切问题的解决方案——egit使用的java不承认证书是可信的。