Ubuntu не может проверить сертификат Sectigo

Ubuntu не может проверить сертификат Sectigo

На сервере, который мы администрируем для клиента, ни одно приложение не может получить доступ к определенным URL-адресам HTTPS, например:

$ wget https://open-data.bielefeld.de/sites/default/files/alters_und_geschlechtsstruktur_ende2011bismitte2022.csv
--2022-12-21 15:59:58--  https://open-data.bielefeld.de/sites/default/files/alters_und_geschlechtsstruktur_ende2011bismitte2022.csv
Resolving open-data.bielefeld.de (open-data.bielefeld.de)... 194.8.223.72
Connecting to open-data.bielefeld.de (open-data.bielefeld.de)|194.8.223.72|:443... connected.
ERROR: cannot verify open-data.bielefeld.de's certificate, issued by ‘CN=Sectigo RSA Domain Validation Secure Server CA,O=Sectigo Limited,L=Salford,ST=Greater Manchester,C=GB’:
  Unable to locally verify the issuer's authority.
To connect to open-data.bielefeld.de insecurely, use `--no-check-certificate'.

Эта проблема возникает во многих программах (включая скрипты R и Python), но я могу получить доступ к URL-адресу из браузера на рабочем столе без проблем. Я предполагаю, что проблема связана с корневыми сертификатами или цепочкой сертификатов. На сервере установлена ​​Ubuntu 20.04 LTS, и все пакеты обновлены. Что может вызывать эту проблему, и есть ли способ исправить ее (безопасно и просто) на моей стороне?

решение1

Действительно, отсутствовал сертификат, не корневой, а промежуточный. HTTPS-серверы должны отправлять все сертификаты в цепочке (за исключением корневого) со своим ответом, но некоторые серверы этого не делают. Веб-браузеры могут справиться с этим, используя технику, называемую AIA (Authority Information Access) chasing*, однако многие другие клиенты не реализуют ее.

Как отметил Штеффен Ульрих в своем комментарии, вы можете найти отсутствующий сертификат и установить его в своей системе.

Сначала получите сертификат. Вы можете сделать это вручную, проверив сайт наSSLLabs, и гуглите отпечаток отсутствующего сертификата. Сертификат должен быть в формате PEM (base64, закодированный с помощью BEGIN и END CERTIFICATE). Я также написал скрипт для извлечения сертификата через AIA, прежде чем понял, что это можно сделать вручную:https://github.com/jdmansour/fetch-intermediate-certs

Затем, чтобы импортировать сертификат в Ubuntu/Debian, поместите его в /usr/share/ca-certificates/extra(создайте каталог, если необходимо) и запустите sudo dpkg-reconfigure ca-certificates. Он спросит вас, следует ли доверять новым сертификатам при обновлениях системы — выберите любой понравившийся вам вариант, я думаю, что «да» — это вариант по умолчанию. На следующем экране вы можете включить свой новый сертификат. Он должен быть немедленно подхвачен большинством инструментов, которые используют OpenSSL.


*) Насколько мне известно, в Firefox AIA не реализована, но там она тоже как-то работает.

Связанный контент