在Windows 7上使用git为GitHub提供证书错误

时间:2015-08-28 17:16:57

标签: git github digital-certificate

目前,我收到此错误:

$ git clone https://github.com/square/haha.git
Cloning into 'haha'...
fatal: unable to access 'https://github.com/square/haha.git/': SSL certificate problem: self signed certificate in certificate chain

我在Windows 7机器上。我了解到Github的证书是由DigiCert签署的。如果我查看受信任的根证书颁发机构>证书,我看到颁发给DigiCert的证书:

DigiCert Assured ID Root CA
DigiCert Assured ID Root G2
DigiCert Assured ID Root G3
DigiCert Global Root CA
DigiCert Global Root G2
DigiCert Global Root G3
DigiCert High Assurance EV Root CA
DigiCert Trusted Root G4

GitHub证书是否包含在其中一个中? 如果是这样,我该如何使用它?如果不是我如何得到它?

编辑 - 更多信息:
我可以将sslVerify设置为false并且它可以工作,但这当然不安全 我可以使用git://而不是https://。这也有效,但不是https。

我无法使用SSH,因为此环境没有设置代理。 使用ssh:

    $ git clone ssh://github.com/square/haha.git
    Cloning into 'haha'...
    D:/Program Files/Git/usr/bin/bash: -c: line 0: syntax error near unexpected token `<'
    D:/Program Files/Git/usr/bin/bash: -c: line 0: `exec corkscrew <proxyhost> <proxyport> ssh.github.com 443 ~/.ssh/proxy_auth'
    write: Broken pipe
    fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

2 个答案:

答案 0 :(得分:6)

想法是下载自签名证书,并在克隆期间引用它:

git -c http.sslCAInfo=/path/to/self/signed/cert clone https://github.com/square/haha.git

例如,您可以使用iwonbigbro/tools/bin/git-remote-install-cert.sh

  • 下载所述证书(包括自签名证书)

    openssl s_client -connect
    
  • 注册该证书:

    git config --global http.sslCAPath "$HOME/.gitcerts"
    

(此处$HOME/.gitcerts是一个目录,其中所有证书都可以通过git找到)

该工具,因为它被称为git-remote-install-cert.sh,由git remote-install-cert执行(即使在Windows上)。

我建议尽管使用最新的PortableGit-2.5.1-64-bit.7z.exe,在任何地方都可以解压缩(例如在C:\prgs\PortableGit-2.5.1-64-bit中)。
然后拨打C:\prgs\PortableGit-2.5.1-64-bit\git-bash.exe,检查$PATH并尝试git remote-install-cert

示例,在简单的DOS会话中,PATH包括C:\prgs\bin
(它还包括C:\prgs\PortableGit-2.5.1-64-bit\bin,这意味着我在这里使用git 2.5.0)

  • 创建一个文件C:\prgs\bin\git-remote-install-cert,您可以在其中复制iwonbigbro/tools/bin/git-remote-install-cert.sh(因此最终本地脚本文件名中没有尾随.sh
  • 将第111行从mkdir -m 0700 -p ${cert%/*}更改为mkdir -p ${cert%/*}(不需要更改第37行)
  • 进入现有的回购。
    或创建一个,并添加远程源url:
    (当然,要适应环境的路径)

    cd C:\Users\vonc\prog
    git init b2d
    cd b2d
    git remote add origin https://github.com/VonC/b2d
    
  • 最后,从该回购中调用脚本

    C:\Users\vonc\prog\b2d>git remote-install-cert
      Requesting certificate from the server...
      Certificate installed to: /c/Users/vonc/.gitcerts/github.com.crt
    

那会给你证书:

C:\Users\vonc\prog\b2d>type C:\Users\vonc\.gitcerts\github.com.crt
-----BEGIN CERTIFICATE-----
MIIF4DCCBMigAwIBAgIQDACTENIG2+M3VTWAEY3chzANBgkqhkiG9w0BAQsFADB1
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMTQwMgYDVQQDEytEaWdpQ2VydCBTSEEyIEV4dGVuZGVk
IFZhbGlkYXRpb24gU2VydmVyIENBMB4XDTE0MDQwODAwMDAwMFoXDTE2MDQxMjEy
MDAwMFowgfAxHTAbBgNVBA8MFFByaXZhdGUgT3JnYW5pemF0aW9uMRMwEQYLKwYB
BAGCNzwCAQMTAlVTMRkwFwYLKwYBBAGCNzwCAQITCERlbGF3YXJlMRAwDgYDVQQF
Ewc1MTU3NTUwMRcwFQYDVQQJEw41NDggNHRoIFN0cmVldDEOMAwGA1UEERMFOTQx
....

从那里,你仍然可以在那个回购中使用该证书获取:

cd C:\Users\vonc\prog\b2d
git config http.sslcapath C:\Users\vonc\.gitcerts
git fetch
git checkout master

答案 1 :(得分:-2)

尝试

sub("\\.\\d$", '', s)

或执行git -c http.sslVerify=false clone https://github.com/square/haha.git 并再次克隆