自从我更新到 Ubuntu 14.04 后,我无法连接到公司的 git 服务器。它仅使用带有 SSL 协议的 https。运行时git clone
(或连接到服务器的任何其他 git 命令)我得到以下输出:
$ git clone https://git.my.company.com/repository.git
Cloning into 'repository'...
fatal: unable to access 'https://git.my.company.com/repository.git': gnutls_handshake() failed: A record packet with illegal version was received.
我在使用 mercurial 时遇到了类似的问题(同一家公司的服务器),我通过在 mercurial 配置 ~/.hgrc 中禁用 TLS 协议来“修复”该问题:
[ui]
tls = False
我想我遇到了与 git 相同的问题,但是我不知道如何禁用 git 的 TLS。
从错误来看,git 似乎使用了 gnutls。我尝试使用gnutls-cli
::禁用 TLS
$ gnutls-cli "NORMAL:-VERS-TLS1.0:-VERS-TLS1.1:-VERS-TLS1.2" git.my.company.com
这可以建立与服务器的连接。然而
$ gnutls-cli "NORMAL:-VERS-SSL3.0" git.my.company.com
给出与 git 相同的错误:GnuTLS error: A record packet with illegal version was received.
但是,gnutls 似乎没有任何配置文件(例如在 /etc/ 中)来存储"NORMAL:-VERS-TLS1.0:-VERS-TLS1.1:-VERS-TLS1.2"
主机名的部分
那么,如何配置 git 或 gnutls 来禁用 TLS 或强制使用 SSL?
注意:我无法修改服务器,ICT 员工计划升级服务器(硬件和软件都相当过时),但由于缺乏可用时间,这(可能)不会很快发生......