我受困于防火墙,因此必须使用 HTTPS 访问我的 GitHub 存储库。我在 Windows XP 上使用 cygwin 1.7.7。
我试过将 Remote 设置为 https://username@github.com/username/ExcelANT.git
,但推送密码提示,但在我输入密码后什么也没做。
https://username:<password>github.com/username/ExcelANT.git
并从头开始克隆空的 repo,但每次它都会给我同样的错误
error: SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed while accessing https://github.com/username/ExcelANT.git/info/refs
开启 GIT_CURL_VERBOSE=1
给我
* About to connect() to github.com port 443 (#0)
* Trying 207.97.227.239... * successfully set certificate verify locations:
* CAfile: none
CApath: /usr/ssl/certs
* SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
* Expire cleared
* Closing connection #0
* About to connect() to github.com port 443 (#0)
* Trying 207.97.227.239... * successfully set certificate verify locations:
* CAfile: none
CApath: /usr/ssl/certs
* SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
* Expire cleared
* Closing connection #0
error: SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed while accessing https://github.com/username/ExcelANT.git/info/refs
fatal: HTTP request failed
这是我的防火墙、cygwin 还是什么的问题?
我没有在 Git 配置中设置 HTTP 代理,但是它是一个需要 NTLM 身份验证的 ISA 服务器,而不是基本的,所以除非有人知道如何强制 git 使用 NTLM,否则我很沮丧。
最佳答案
问题是您的系统上没有安装任何证书颁发机构证书。并且这些证书不能用 cygwin 的 setup.exe 安装。
更新:Install Net/ca-certificates package in cygwin (感谢 dirkjot)
有两种解决方法:
cacert.pem
文件就是您要查找的内容。此文件包含 > 250 个 CA 证书(不知道如何信任这个数量的人)。您需要下载此文件,将其拆分为单独的证书,将它们放入/usr/ssl/certs(您的 CApath)并为它们编制索引。
这是如何做到的。使用 cygwin setup.exe 安装 curl 和 openssl 包 执行:
<!-- language: lang-bash -->
$ cd /usr/ssl/certs
$ curl http://curl.haxx.se/ca/cacert.pem |
awk '{print > "cert" (1+n) ".pem"} /-----END CERTIFICATE-----/ {n++}'
$ c_rehash
重要:为了使用c_rehash
,您还必须安装openssl-perl
。
忽略 SSL 证书验证。
警告:禁用 SSL 证书验证会产生安全隐患。如果不验证 SSL/HTTPS 连接的真实性,恶意攻击者可以冒充受信任的端点(例如 GitHub或其他一些远程 Git 主机),你将容易受到 Man-in-the-Middle Attack 的攻击. 在将其用作解决方案之前,请确保您完全了解安全问题和您的威胁模型。
$ env GIT_SSL_NO_VERIFY=true git clone https://github...
关于git - SSL 证书拒绝尝试通过防火墙后的 HTTPS 访问 GitHub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4652532/