Получение ошибок при попытке прикрепить токен ua

Я пытаюсь включить ESM на своем VPS-сервере 16.04, но получаю сообщения об ошибках при попытке подключения к каноническому серверу. Ошибка, которую я получаю после запуска команды 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. И когда я пингую https://canonical.com , я получаю нормальный ответ.

У кого-нибудь есть идеи?


Спасибо за помощь, @andrew-lowther. Я сделал, как вы предложили. Я не мог опубликовать этот длинный результат в комментарии к вашему ответу.

ca-сертификаты были уже последней версии. Тест на завиток также выглядит нормально:

      * 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`

Это дает вам другие подсказки?

Спасибо еще раз.

2 ответа

Сообщение об ошибке указывает, что подключение разрешено, но ваш VPS-сервер не доверяет сертификату сервера Canonical.

Хороший первый шаг — убедиться, что корневые сертификаты на вашем VPS-сервере обновлены.

      apt-get update
apt-get install ca-certificates

Использование — это простой способ проверки. Если эта команда завершается ошибкой с выводом, который включает SSL certificate problemтогда это подтвердит выпуск сертификата.

      curl -vs https://contracts.canonical.com

Вы также можете использовать -kчтобы игнорировать ошибки сертификата и узнать больше о том, какой сертификат получает сервер 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

Если кто-то приходит сюда с неудачной проверкой сертификата при попытке 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который сделал трюк.

Другие вопросы по тегам