尝试附加 UA 令牌时出错

尝试附加 UA 令牌时出错

我正在尝试在 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成功了。

相关内容