我有一个问题,当我做curl请求或git push时,显示我
curl:(35)gnutls_handshake()失败:公钥签名验证失败。
curl --version
curl 7.50.1(x86_64-pc-linux-gnu)libcurl / 7.50.1 GnuTLS / 3.5.3 zlib / 1.2.8 libidn / 1.33 libssh2 / 1.7.0 nghttp2 / 1.14.0 librtmp / 2.3 协议:dict文件ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp 功能:AsynchDNS IDN IPv6大文件GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets
我已经完成了:更新并将curl降级到版本7.38,但这对我没有帮助。 对不起我的英文,tnx。
答案 0 :(得分:17)
dpkg -l | grep libgnutls
ii libgnutls-deb0-28:amd64 3.3.8-6+deb8u3 amd64 GNU TLS library - main runtime library
ii libgnutls-openssl27:amd64 3.3.8-6+deb8u3 amd64 GNU TLS library - OpenSSL wrapper
ii libgnutls30:amd64 3.5.7-2 amd64 GNU TLS library - main runtime library
sudo apt-get remove --purge libgnutls-deb0-28
......为我工作。
答案 1 :(得分:2)
降级到7.38.0后,我也不得不降级:
$ sudo apt-mark hold libcurl3-gnutls
$ sudo apt-get install libcurl3-gnutls=7.38.0-4+deb8u4
然后错误就消失了。 我是debian jessie。
答案 2 :(得分:0)
将curl降级为7.38.0将适用于https url
首先你可以尝试通过apt-get删除curl,实际上apt-get无法删除所有依赖项!然后使用aptitude安装curl 7.38.0,请参阅下面的命令
apt-get remove --auto-remove curl
aptitude install curl = 7.38.0-4 + deb8u4
以下操作将解决这些依赖关系:
Keep the following packages at their current version:
1)卷曲[未安装]
接受此解决方案? [Y / n / q /?] n
以下操作将解决这些依赖关系:
Install the following packages:
1)libcurl3 [7.38.0-4 + deb8u4(稳定)] 接受此解决方案? [Y / n / q /?] y
答案 3 :(得分:0)
我不得不降级libcurl3和卷曲
sudo apt-get install libcurl3-gnutls=7.38.0-4+deb8u4 curl=7.38.0-4+deb8u4 libcurl3=7.38.0-4+deb8u4
```
也适用于Debian测试..需要降级到Jessie的libcurl3