什么版本的 Git 支持 TLS 1.2?

gav*_*koa 0 git jenkins tls1.2

Bitbacket 关闭 TLS v1.0 和 v1.1。我们的 Jenkins 由于旧的 Git 而失败:

git --version
git version 1.8.2.3
+ GIT_CURL_VERBOSE=1
+ git ls-remote https://bitbucket.org/
* Couldn't find host bitbucket.org in the .netrc file, using defaults
* About to connect() to bitbucket.org port 443
*   Trying 18.205.93.1... * connected
* Connected to bitbucket.org (18.205.93.1) port 443
* successfully set certificate verify locations:
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* Unknown SSL protocol error in connection to bitbucket.org:443
Run Code Online (Sandbox Code Playgroud)

我查看了 Git 发行说明:

git clone --depth=1 https://github.com/git/git
Run Code Online (Sandbox Code Playgroud)

并没有发现任何有关 TLS v1.2 支持的信息:

cd git/Documentation/RelNotes
grep TLS
Run Code Online (Sandbox Code Playgroud)

我应该告诉系统管理员哪个版本的 Git 最低支持 TLS v1.2?

注意我们的基础设施并不热请不要谈论更新到昨天的版本...

注意 2我可能会错过 Git 内部结构,而其他操作系统库可能会影响 TLS v1.2 支持。

bk2*_*204 5

为了执行 HTTP 和 HTTPS,Git 使用一个名为 libcurl 的库。该库又链接到一些提供 TLS 的库,这些库通常是 OpenSSL、GnuTLS 或 NSS,具体取决于您的操作系统。在 Linux 上找出您的 Git 链接到其中一个的最简单方法是运行ldd $(which "$(git --exec-path)"/git-http-push).

如果输出包含“libgnutls”的内容,则您正在使用 GnuTLS,并且需要 GnuTLS 2.12.24 或更高版本才能获得正确的 TLS 1.2 支持。

如果输出包含“libnss”,那么您正在使用 NSS,并且需要 NSS 3.15.1。

如果输出包含“libssl”的内容而不包含其他内容,那么您正在使用 OpenSSL,并且需要 OpenSSL 1.0.1。

请注意,某些供应商向后移植补丁或需要升级其 libcurl 版本才能正确启用 TLS 1.2,因此这可能不完全正确,具体取决于您的供应商。

请注意,您可能正在使用适用于 RHEL 和 CentOS 5 的 EPEL 版本的 Git。如果是这样,请注意这些操作系统根本不支持 TLS 1.2,并且不会获得任何支持。