error: gnutls_handshake() failed: A TLS warning alert has been received.

Platform Notice: Data Center Only - This article only applies to Atlassian products on the Data Center platform.

Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

Symptoms

This issue can manifest in 2 ways:

First way:

Performing around a hundred of subsequent cloning or pushing operations directly to Bitbucket Server results in the following error:

1 error: gnutls_handshake() failed: A TLS warning alert has been received.

Second way:

The error message below has been perceived while frequently running git fetch from clients when Bitbucket Server using HTTPS.

1 error: The requested URL returned error: 400 while accessing

If you're running into the error below, setting Git on your client to DEBUG should uncover the same message as seen in the First way:

1 error: gnutls_handshake() failed: A TLS warning alert has been received.

Cause

We've seen this issue being caused by either one of the causes below:

1) Bitbucket Server:

This happens if your Bitbucket Server instance is running on a Java 7 that contains a bug in the TLS/SSL stack.

2) Git Client

The client performing the git fetch operation has run into a bug found libcurl3-gnutls introduced on the 7.21.6-3 release when using HTTPS.

Resolution

You can either:

1) Bitbucket Server

  • As a workaround for this Java bug, you can attach the following parameter to your Tomcat HTTPS connector. The solution has been described here:

    1 2 3 4 5 6 7 ciphers="TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDH_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDH_RSA_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_RC4_128_SHA, TLS_ECDH_ECDSA_WITH_RC4_128_SHA, TLS_ECDH_RSA_WITH_RC4_128_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_RC4_128_MD5, TLS_EMPTY_RENEGOTIATION_INFO_SCSV2"
  • Or upgrade the JVM on the Bitbucket Server instance to version 7u60 or above.

    • We have an assertive confirmation from one of our customers that upgrading to from to 7u45 to 8u45 fixed the issue.

2) Git Client

As reported by a user on the previously linked bug, downgrading libcurl3-gnutls from 7.21.6-3 to 7.21.0-1 is an easy way to solve this issue. See the user's comment:

> I had the same problem, here.

> Downgrading libcurl3-gnutls from 7.21.6-3 to 7.21.0-1 fixed it for me.

Alternatively, if you are trying these operations from a client running Ubuntu, you can find on their forum a workaround to compile your git on the client with openssl, moving off from libcurl3-gnutls.

Quoting the solution from the Ubuntu forum above:

1 2 3 4 5 6 7 8 sudo apt-get install build-essential fakeroot dpkg-dev mkdir ~/git-openssl cd ~/git-openssl sudo apt-get source git sudo apt-get build-dep git sudo apt-get install libcurl4-openssl-dev sudo dpkg-source -x git_1.7.9.5-1.dsc cd git_1.7.9.5

Then, edit debian/control file (run the command: gksu gedit debian/control) and replace all instances of libcurl4-gnutls-dev with libcurl4-openssl-dev.

Then build the package (if it's failing on test, you can remove the line TEST=test from the file debian/rules):

1 sudo dpkg-buildpackage -rfakeroot -b

Install the new package:

i386: sudo dpkg -i ../git_1.7.9.5-1_i386.deb

x86_64: sudo dpkg -i ../git_1.7.9.5-1_amd64.deb

Updated on April 8, 2025

Still need help?

The Atlassian Community is here for you.