我正在尝试在 16.04 VPS 服务器上启用 ESM,但在尝试连接到规范服务器时出现错误。运行 ssh 命令后出现的错误# sudo ua attach C122.....
是:
Failed to connect to authentication server
Check your Internet connection and try again.
Failed to access URL: https://contracts.canonical.com/v1/resources?kernel=4.4.0-1160.21.1.vz7.174.13&series=xenial&architecture=amd64
Cannot verify certificate of server
Please check your openssl configuration.
我读到过一些文章说它可能iptables
阻止了它,但我已经OUTGOING
打开了ACCEPT ALL
。当我 pinghttps://canonical.com我得到了健康的回应。
有人知道吗?
谢谢你的帮助,@andrew-lowther。我按照你的建议做了。我无法将这个冗长的结果发布到你答案的评论中。
ca-certicates 已经是最新版本。curl 测试似乎也很好:
* Connected to contracts.canonical.com (91.189.92.69) port 443 (#0)
* found 129 certificates in /etc/ssl/certs/ca-certificates.crt
* found 520 certificates in /etc/ssl/certs
* ALPN, offering http/1.1
* SSL connection using TLS1.2 / ECDHE_RSA_AES_256_GCM_SHA384
* server certificate verification OK
* server certificate status verification SKIPPED
* common name: contracts.canonical.com (matched)
* server certificate expiration date OK
* server certificate activation date OK
* certificate public key: RSA
* certificate version: #3
* subject: CN=contracts.canonical.com
* start date: Fri, 16 Jul 2021 18:50:43 GMT
* expire date: Thu, 14 Oct 2021 18:50:41 GMT
* issuer: C=US,O=Let's Encrypt,CN=R3
* compression: NULL
* ALPN, server accepted to use http/1.1
> GET / HTTP/1.1
> Host: contracts.canonical.com
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 404 Not Found
< Server: openresty/1.15.8.2
< Date: Sat, 24 Jul 2021 10:10:20 GMT
< Content-Type: text/plain; charset=utf-8
< Content-Length: 19
< Connection: keep-alive
< Strict-Transport-Security: max-age=15724800; includeSubDomains
< X-Content-Type-Options: nosniff
< X-Trace-Id: 05087364-13c5-426f-9a59-99c7384f2dde
<
404 page not found
* Connection #0 to host contracts.canonical.com left intact`
这能给你其他线索吗?
再次感谢。
答案1
错误消息表明允许连接,但您的 VPS 服务器不信任 Canonical 服务器的证书。
最好的第一步是确保您的 VPS 服务器上的根证书是最新的。
apt-get update
apt-get install ca-certificates
使用curl
是一种简单的测试方法。如果此命令失败,输出包括,SSL certificate problem
则可确认证书问题。
curl -vs https://contracts.canonical.com
您还可以使用该-k
选项curl
忽略证书错误并了解有关 VPS 服务器正在接收的证书的更多信息。
curl -vsk https://contracts.canonical.com -o /dev/null
编辑
您的curl
输出确实表明 Canonical 服务器的证书是可信的。您的 VPS 服务器可以访问 Canonical 服务器,并且似乎没有任何东西干扰流量。
您可以尝试这些其他命令,尽管它们通常不需要手动运行。
update-ca-certificates
c_rehash /etc/ssl/certs
当我执行strace
命令时ua
,它似乎专门在寻找文件/usr/lib/ssl/certs/4042bcee.0
。您还可以验证它是否存在并且是根证书的符号链接。此符号链接由命令创建c_rehash
。
# ls -l /usr/lib/ssl/certs/4042bcee.0
lrwxrwxrwx 1 root root 16 Feb 19 14:09 /usr/lib/ssl/certs/4042bcee.0 -> ISRG_Root_X1.pem
编辑2
从你的评论来看,/usr/lib/ssl/
目录可能有点乱。它应该包含几个符号链接
$ ls -l /usr/lib/ssl/
total 4
lrwxrwxrwx 1 root root 14 Apr 15 2016 certs -> /etc/ssl/certs
drwxr-xr-x 2 root root 4096 Feb 19 14:10 misc
lrwxrwxrwx 1 root root 20 Feb 17 10:21 openssl.cnf -> /etc/ssl/openssl.cnf
lrwxrwxrwx 1 root root 16 Apr 15 2016 private -> /etc/ssl/private
答案2
curl -vs https://contracts.canonical.com
如果有人在尝试按照说明开始时遇到证书检查失败的情况这里
显示的命令为:
cd /usr/share/ca-certificates
sudo mkdir letsencrypt.org
cd letsencrypt.org/
wget "https://letsencrypt.org/certs/isrgrootx1.pem"
sudo update-ca-certificates
这对我来说仍然不起作用。看到这里certs 文件夹包含证书文件的符号链接。我将文件复制到其中etc/ssl/certs
并创建了指向它的符号链接。(复制可能没有必要)。然后我运行了 @Andrew 提到的更新证书命令,c_rehash /etc/ssl/certs
成功了。