curl:(35)gnutls握手失败:公钥签名验证失败

4
我有一个问题,当我执行curl请求或git push时,它显示:
curl: (35) gnutls_handshake() failed: Public key signature verification has failed.
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 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets
我已经尝试更新和降级curl到版本7.38,但这并没有帮助我。对不起我的英语,谢谢。
4个回答

19
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
这个 apt-get remove 命令建议删除256个软件包,其中包括我使用的许多东西... - HighCommander4
我删除了除libgnutls30:amd64之外的所有内容,然后它又可以正常工作了。 - CSchulz

3

在降级到curl 7.38.0之后,我还必须降级以下软件:

$ sudo apt-mark hold libcurl3-gnutls
$ sudo apt-get install libcurl3-gnutls=7.38.0-4+deb8u4

然后错误消失了。我使用的是debian jessie系统。


1

将curl降级为7.38.0可以用于https网址。

首先,您可以尝试使用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) curl [未安装]

接受此解决方案?[Y/n/q/?] n

以下操作将解决这些依赖关系:

 Install the following packages:

1) libcurl3 [7.38.0-4+deb8u4(稳定版)] 接受此解决方案?[Y/n/q/?] y


1

我不得不降级libcurl3和curl

sudo apt-get install libcurl3-gnutls=7.38.0-4+deb8u4 curl=7.38.0-4+deb8u4 libcurl3=7.38.0-4+deb8u4 

```

这也适用于Debian Testing..需要降级到Jessie的libcurl3。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接