GitHub 在 Windows 上使用 git 的 HTTPS 证书错误 7
Https certificate errors for GitHub using git on Windows 7
目前,我收到此错误:
$ 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 签署的。如果我查看 Trusted Root Certification Authorities > Certificates,我会看到颁发给 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.
尝试
git -c http.sslVerify=false clone https://github.com/square/haha.git
或执行git config --global http.sslVerify false
并再次克隆
想法是下载自签名证书,并在克隆时引用它:
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
最后,调用那个 repo 中的脚本
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
....
从那里,您仍然可以在那个 repo 中使用该证书获取:
cd C:\Users\vonc\prog\b2d
git config http.sslcapath C:\Users\vonc\.gitcerts
git fetch
git checkout master
目前,我收到此错误:
$ 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 签署的。如果我查看 Trusted Root Certification Authorities > Certificates,我会看到颁发给 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.
尝试
git -c http.sslVerify=false clone https://github.com/square/haha.git
或执行git config --global http.sslVerify false
并再次克隆
想法是下载自签名证书,并在克隆时引用它:
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
最后,调用那个 repo 中的脚本
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
....
从那里,您仍然可以在那个 repo 中使用该证书获取:
cd C:\Users\vonc\prog\b2d
git config http.sslcapath C:\Users\vonc\.gitcerts
git fetch
git checkout master