我遵循了此处描述的步骤https://packages.sury.org/php/README.txt添加一个包含我需要安装的一些包的 APT 存储库(例如,我需要 php7.0-dev)。
sudo apt-get -y install apt-transport-https lsb-release ca-certificates
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
sudo apt-get update
据我所知,上述命令旨在为 packages.sury.org 安装 SSL 证书,以便 APT 命令可以通过 SSL 与 packages.sury.org 服务器通信。
然后 APT 存储库被添加到 sources.list.d。
在最后一个命令 apt-get update 中,我收到以下错误:
W:获取失败https://packages.sury.org/php/dists/trusty/main/binary-amd64/Packagesgnutls_handshake() 失败:握手失败
我认为 SSL 证书尚未正确安装到我的本地机器,因此前两个命令显然无效。
到底出了什么问题?
或者,在我的计算机上的本地网站上克隆 sury.org 存储库(没有 SSL)并添加http://本地主机存储库而不是https://packages.sury.org? 这将消除 APT 通过 SSL 进行通信的需要。
谢谢
编辑:这是 gnutls-cli 的输出
gnutls-cli -V -V packages.sury.org:443
Resolving 'packages.sury.org:443'...
Cannot resolve packages.sury.org:443:443: Name or service not known
gnutls-cli -V -V packages.sury.org
Resolving 'packages.sury.org'...
Connecting to '104.31.95.169:443'...
*** Fatal error: A TLS fatal alert has been received.
*** Received alert [40]: Handshake failed
*** Handshake has failed
GnuTLS error: A TLS fatal alert has been received.
gnutls-cli -v
gnutls-cli (GnuTLS) 2.12.23
Packaged by Debian (2.12.23-12ubuntu2.8)
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Nikos Mavrogiannopoulos.
答案1
看起来您正在使用不再受支持的版本(gnutls 版本特定于 Ubuntu 14.04)。并且您正在尝试使用需要信噪比可以看出SSLLabs 报告。不过,至少在你使用的版本中,已知问题在于需要 SNI 的 APT 服务器无法正常工作 - 请参阅https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1551464。鉴于您的版本不再受支持,这个问题不太可能得到修复。
... 在我的计算机上的本地网站上克隆 sury.org 存储库(没有 SSL)是一个好主意吗...
那就没问题了。主要安全性由软件包的签名提供,而不是 HTTPS。而且您已经安装了密钥来检查签名是否可信。