尝试在防火墙后通过HTTPS访问GitHub时,SSL证书被拒绝
我被困在防火墙后面,所以必须使用HTTPS访问我的GitHub存储库。我正在Windows XP上使用cygwin 1.7.7 我已尝试将遥控器设置为尝试在防火墙后通过HTTPS访问GitHub时,SSL证书被拒绝,git,ssl,github,cygwin,ssl-certificate,Git,Ssl,Github,Cygwin,Ssl Certificate,我被困在防火墙后面,所以必须使用HTTPS访问我的GitHub存储库。我正在Windows XP上使用cygwin 1.7.7 我已尝试将遥控器设置为https://username@github.com/username/ExcelANT.git,但按提示输入密码,但在输入密码后不会执行任何操作。 https://username:github.com/username/ExcelANT.git并从头开始克隆空回购协议,但每次都会出现相同的错误 错误:SSL证书问题,请验证CA证书是否正常。详
https://username@github.com/username/ExcelANT.git
,但按提示输入密码,但在输入密码后不会执行任何操作。
https://username:github.com/username/ExcelANT.git
并从头开始克隆空回购协议,但每次都会出现相同的错误
错误:SSL证书问题,请验证CA证书是否正常。详细信息:错误:14090086:SSL例程:SSL3\u获取\u服务器\u证书:访问时证书验证失败 打开
GIT\u CURL\u VERBOSE=1会让我
*即将连接()到github.com端口443(#0)
*正在尝试207.97.227.239…*已成功设置证书验证位置:
*CAfile:无
CApath:/usr/ssl/certs
*SSL证书问题,请验证CA证书是否正常。详细信息:
错误:14090086:SSL例程:SSL3\u获取\u服务器\u证书:证书验证失败
*过期已清除
*关闭连接#0
*即将连接()到github.com端口443(#0)
*正在尝试207.97.227.239…*已成功设置证书验证位置:
*CAfile:无
CApath:/usr/ssl/certs
*SSL证书问题,请验证CA证书是否正常。详细信息:
错误:14090086:SSL例程:SSL3\u获取\u服务器\u证书:证书验证失败
*过期已清除
*关闭连接#0
错误:SSL证书问题,请验证CA证书是否正常。详细信息:
错误:14090086:SSL例程:SSL3\u获取\u服务器\u证书:访问时证书验证失败
这是我的防火墙问题吗,cygwin还是什么
我没有在Git配置中设置HTTP代理,但是它是一个需要NTLM身份验证的ISA服务器,而不是基本身份验证,因此除非有人知道如何强制Git使用NTLM,否则我将失败。如果您想解决证书问题,请跳过此答案。这个答案涉及ssh通过防火墙的隧道,这是处理防火墙/代理问题的更好解决方案
有一种比使用http访问更好的方法,那就是在ssh.github.com服务器的端口443上使用github提供的ssh服务
我们使用一种叫做开瓶器的工具。这对于CygWin(通过CygWin主页上的设置)和使用您喜爱的打包工具的Linux都是可用的。对于MacOSX,至少可从macports和brew获得
命令行如下所示:
$ corkscrew <proxyhost> <proxyport> <targethost> <targetport> <authfile>
使用“普通”ssh协议进行git通信的安装
通过将其添加到~/.ssh/config
中,此技巧可用于正常的ssh连接
Host github.com
HostName ssh.github.com
Port 443
User git
ProxyCommand corkscrew <proxyhost> <proxyport> %h %p ~/.ssh/proxy_auth
(注意:如果您以前从未登录过github,ssh将要求将服务器密钥添加到已知主机文件。如果您患有妄想症,建议将RSA指纹验证为您上载密钥的github站点上显示的指纹)
当您需要使用另一个密钥访问存储库(例如,将您的私人帐户与您的专业帐户分开)时,此方法有一个细微的变化
#
# account dedicated for the ACME private github account
#
Host acme.github.com
User git
HostName ssh.github.com
Port 443
ProxyCommand corkscrew <proxyhost> <3128> %h %p ~/.ssh/proxy_auth
IdentityFile ~/.ssh/id_dsa_acme
#
#专用于ACME private github帐户的帐户
#
主机acme.github.com
用户git
主机名ssh.github.com
端口443
ProxyCommand%h%p~/.ssh/proxy\u auth
IdentityFile~/.ssh/id_dsa_acme
享受吧
我们已经在Linux、Mac和Windows上使用它很多年了
如果需要,您可以问题是您的系统上没有安装任何证书颁发机构证书。这些证书不能与cygwin的setup.exe一起安装
更新:(谢谢dirkjot)
有两种解决方案:
实际安装根证书
cacert.pem
文件就是您要查找的文件。此文件包含>250个CA证书(不知道如何信任此数量的ppl)。您需要下载此文件,将其拆分为各个证书,将它们放入/usr/ssl/certs(您的CApath)并为它们编制索引
下面是如何做到这一点。使用cygwin setup.exe安装curl和openssl软件包
执行:
$cd/usr/ssl/certs
$curlhttp://curl.haxx.se/ca/cacert.pem |
awk'{print>“cert”(1+n)“.pem”}/----结束证书------/{n++}”
$c_rehash
重要:为了使用c_rehash
,您还必须安装openssl perl
忽略SSL证书验证
警告:禁用SSL证书验证会带来安全隐患。如果不验证SSL/HTTPS连接的真实性,恶意攻击者可以模拟受信任的端点(如GitHub或其他远程Git主机),您将容易受到攻击在将其用作解决方案之前,请确保您完全了解安全问题和威胁模型。
$ env GIT_SSL_NO_VERIFY=true git clone https://github...
对于Solaris Express 11,我也遇到了同样的问题。我花了一段时间,但我设法找到了需要放置证书的位置。根据/etc/openssl/openssl.cnf,证书的路径是/etc/openssl/certs。我放置了使用Alexey的上述建议生成的证书
您可以在命令行上使用openssl验证工作是否正常:
openssl s_client -connect github.com:443
如果您只想在github.com上使用Cygwin git客户端,那么有一种更简单的方法,无需经历下载、提取、转换和拆分证书文件的麻烦。按照以下步骤进行(我假设Windows XP带有Cygwin和Firefox)
在Firefox中,转到github页面(任意)
单击地址栏上的github图标以显示证书
单击“更多信息”->“显示证书”->“详细信息”,从最上面的节点开始选择层次结构中的每个节点;对他们每个人来说
#
# account dedicated for the ACME private github account
#
Host acme.github.com
User git
HostName ssh.github.com
Port 443
ProxyCommand corkscrew <proxyhost> <3128> %h %p ~/.ssh/proxy_auth
IdentityFile ~/.ssh/id_dsa_acme
$ env GIT_SSL_NO_VERIFY=true git clone https://github...
openssl s_client -connect github.com:443
curl http://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt
mkdir ~/certs
curl https://curl.haxx.se/ca/cacert.pem -o ~/certs/cacert.pem
[http]
sslCAinfo = /home/radium/certs/cacert.pem
git config --global http.sslVerify false
git config http.sslVerify false
machine github.com login myusername password mypass
$ brew install curl-ca-bundle
$ git config --system http.sslcainfo /usr/local/share/ca-bundle.crt
share.install 'ca-bundle.crt'
$ echo insecure >> ~/.curlrc
$ brew update
$ brew upgrade
$ git config --system http.sslcainfo /usr/local/share/ca-bundle.crt
$ git config -l --system
apt-cyg install ca-certificates
cd c:\cygwin
setup.exe -q -P wget,tar,qawk,bzip2,subversion,vim
wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
install apt-cyg /bin
set GIT_SSL_NO_VERIFY=true
git config --global http.proxy http://<your-proxy>:443
ssh -T git@github.com
git@github.com:MyGithubUsername/MyRepoName.git
sudo apt-get install ca-certificates
git clone http://github.com/andreafabrizi/Dropbox-Uploader.git
export GIT_SSL_CAINFO=/mingw32/ssl/certs/ca-bundle.crt
#!/bin/sh
/usr/sbin/ntpdate -u 0.ubuntu.pool.ntp.org 1> /dev/null 2>&1
git -c http.sslVerify=false clone http://example.com/e.git
git -c http.sslVerify=false clone https://<username>:<token>@github.com/repo.git
git config --global http.sslVerify false
git clone https://github.com/repo.git