使用 git 2.5 在 windows 下克隆 git 时出现 SSL3 错误
SSL3 error on git clone under windows with git 2.5
我在 windows 10 上使用 git,在 SSL 公司代理后面使用自签名证书绕过 cntlm,并将证书添加到自定义 curl-ca-bundle.crt 文件
从 Git 2.5 开始,当我执行
git clone 'https://XXXX@bitbucket.org/XXXX/XXXX.git/'
我收到以下错误:
fatal: unable to access 'https://XXXX@bitbucket.org/XXXX/XXXX.git/':
error:14082174:SSL routines:ssl3_check_cert_and_algorithm:dh key too small
这个问题可能与自签名证书质量差有关,但我无法更改证书本身(这是我无法控制的)
请注意:
- 如果您看到 XXXX 是 security/privacy 的编辑值,但这不相关
- 我无法重建自签名证书(我无法控制)
- 我已经尝试使用 git config https.sslVerify false(即使使用 --global 来确定...)
- 使用以前的 git 版本不会发生此问题
下面是我自己的配置:
git config --list
core.symlinks=false
core.autocrlf=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
diff.astextplain.textconv=astextplain
rebase.autosquash=true
http.proxy=http://localhost:9999
http.sslcainfo=c:/Users/XXXX/curl-ca-bundle.crt
https.proxy=https://localhost:9999
https.sslcainfo=c:/Users/XXXX/curl-ca-bundle.crt
有办法解决这个问题吗?
更新:
根据@VonC 的建议,我已将设置更改为按项目设置使用。
我将全局设置保留为默认设置并更改了每个项目的设置,但问题仍然存在。
所以,现在设置如下:
全局设置:
core.symlinks=false
core.autocrlf=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
diff.astextplain.textconv=astextplain
rebase.autosquash=true
每个项目设置:
core.symlinks=false
core.autocrlf=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
diff.astextplain.textconv=astextplain
rebase.autosquash=true
http.proxy=http://localhost:9999
http.sslcainfo=c:/Users/XXXX/curl-ca-bundle.crt
https.proxy=https://localhost:9999
https.sslcainfo=c:/Users/XXXX/curl-ca-bundle.crt
一个解决方法是:
- 不要将您的自签名证书放入您的 git 发行版
curl-ca-bundle.crt
- 放在专用的file.crt
这会有两个副作用:
- 您可以继续推送到 Bitbucket
- 任何实际上可能需要该自签名证书的存储库都可以添加本地
git config http.sslCAInfo /path/to/self-signed/certificate
这将确保只为该存储库使用自定义证书文件:
git -c http.https://bitbucket.org/.sslcainfo=/path/to/mycertif.cert clone https://XXXX@bitbucket.org/XXXX/XXXX.git
但是,作为 OP Marco confirms ,错误消息仍然存在:
error:14082174:SSL routines:ssl3_check_cert_and_algorithm:dh key too small
As a security improvement, this update also modifies OpenSSL behaviour to
reject DH key sizes below 768 bits, preventing a possible downgrade
attack.
一个可能的解决方案是 specify the cipher you want to use... but that won't be possible before git 2.6(2015 年 9 月末)
免责声明:此解决方案是无法使用上述建议的正确解决方案的人们的最后希望。
请仅在您真正了解此解决方案涉及的所有影响和安全问题时使用
仅当您没有任何其他选择时才必须使用此解决方案,如果可能,请将您的 git 版本降级到 2.5 以下或等待 Git 2.6
作为第一个更好、更安全的解决方案,请查看以下来自 a VonC
的回复
如果您确实需要一个快速的(但是,重复,错误)解决方案,可以按照以下在 Win 7 x64 和 Win 10 x64 上测试的步骤进行操作:
从 http://www.openssl.org/community/binaries.html 下载 openssl-1.0.2-i386-win32.zip (win 32) 或 openssl-1.0.2-x64_86-win64.zip ( win x64) 基于您的平台的预编译库。
将下载的文件解压到临时目录
将 c:\Program Files\Git\mingw64\bin\ssleay32.dll 重命名为其他名称(作为出现问题时的备份...)
复制第1点提取的ssleay32.dll到c:\ProgramFiles\Git\mingw64\bin\
这会将 SSL 库降级为安全性较低的版本,该版本接受小于 768 位的 DH 密钥
我在 windows 10 上使用 git,在 SSL 公司代理后面使用自签名证书绕过 cntlm,并将证书添加到自定义 curl-ca-bundle.crt 文件
从 Git 2.5 开始,当我执行
git clone 'https://XXXX@bitbucket.org/XXXX/XXXX.git/'
我收到以下错误:
fatal: unable to access 'https://XXXX@bitbucket.org/XXXX/XXXX.git/':
error:14082174:SSL routines:ssl3_check_cert_and_algorithm:dh key too small
这个问题可能与自签名证书质量差有关,但我无法更改证书本身(这是我无法控制的)
请注意:
- 如果您看到 XXXX 是 security/privacy 的编辑值,但这不相关
- 我无法重建自签名证书(我无法控制)
- 我已经尝试使用 git config https.sslVerify false(即使使用 --global 来确定...)
- 使用以前的 git 版本不会发生此问题
下面是我自己的配置:
git config --list
core.symlinks=false
core.autocrlf=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
diff.astextplain.textconv=astextplain
rebase.autosquash=true
http.proxy=http://localhost:9999
http.sslcainfo=c:/Users/XXXX/curl-ca-bundle.crt
https.proxy=https://localhost:9999
https.sslcainfo=c:/Users/XXXX/curl-ca-bundle.crt
有办法解决这个问题吗?
更新:
根据@VonC 的建议,我已将设置更改为按项目设置使用。 我将全局设置保留为默认设置并更改了每个项目的设置,但问题仍然存在。
所以,现在设置如下:
全局设置:
core.symlinks=false
core.autocrlf=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
diff.astextplain.textconv=astextplain
rebase.autosquash=true
每个项目设置:
core.symlinks=false
core.autocrlf=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
diff.astextplain.textconv=astextplain
rebase.autosquash=true
http.proxy=http://localhost:9999
http.sslcainfo=c:/Users/XXXX/curl-ca-bundle.crt
https.proxy=https://localhost:9999
https.sslcainfo=c:/Users/XXXX/curl-ca-bundle.crt
一个解决方法是:
- 不要将您的自签名证书放入您的 git 发行版
curl-ca-bundle.crt
- 放在专用的file.crt
这会有两个副作用:
- 您可以继续推送到 Bitbucket
- 任何实际上可能需要该自签名证书的存储库都可以添加本地
git config http.sslCAInfo /path/to/self-signed/certificate
这将确保只为该存储库使用自定义证书文件:
git -c http.https://bitbucket.org/.sslcainfo=/path/to/mycertif.cert clone https://XXXX@bitbucket.org/XXXX/XXXX.git
但是,作为 OP Marco confirms
error:14082174:SSL routines:ssl3_check_cert_and_algorithm:dh key too small
As a security improvement, this update also modifies OpenSSL behaviour to reject DH key sizes below 768 bits, preventing a possible downgrade attack.
一个可能的解决方案是 specify the cipher you want to use... but that won't be possible before git 2.6(2015 年 9 月末)
免责声明:此解决方案是无法使用上述建议的正确解决方案的人们的最后希望。
请仅在您真正了解此解决方案涉及的所有影响和安全问题时使用
仅当您没有任何其他选择时才必须使用此解决方案,如果可能,请将您的 git 版本降级到 2.5 以下或等待 Git 2.6
作为第一个更好、更安全的解决方案,请查看以下来自 a VonC
的回复如果您确实需要一个快速的(但是,重复,错误)解决方案,可以按照以下在 Win 7 x64 和 Win 10 x64 上测试的步骤进行操作:
从 http://www.openssl.org/community/binaries.html 下载 openssl-1.0.2-i386-win32.zip (win 32) 或 openssl-1.0.2-x64_86-win64.zip ( win x64) 基于您的平台的预编译库。
将下载的文件解压到临时目录
将 c:\Program Files\Git\mingw64\bin\ssleay32.dll 重命名为其他名称(作为出现问题时的备份...)
复制第1点提取的ssleay32.dll到c:\ProgramFiles\Git\mingw64\bin\
这会将 SSL 库降级为安全性较低的版本,该版本接受小于 768 位的 DH 密钥