Вы вставляете однострочную команду установщика из руководства, нажимаете Enter и получаете curl: (77). В сообщении упоминаются пути проверки сертификата, поэтому инстинкт подсказывает, что сертификат провайдера VPN сломан, и хочется взять флаг, пропускающий проверку. Это прочтение неверно, и действие по нему превращает локальную проблему файла в решение о безопасности. Давайте разберём с самого начала.

Шаг 1: прочитайте, что означает число

Ошибка 77 относится к локальному вводу CA: curl не смог прочитать или загрузить материал сертификата, которому ему велели доверять. Ошибка 60 — это про противоположную сторону, когда цепочка сервера не проходит проверку. В руководствах они стоят рядом и означают противоположное.

Если в выводе 77, сервер никогда не был проблемой. Клиент не смог открыть файл, который собирался использовать для проверки, а это проблема пути, прав или упаковки на вашей машине.

Шаг 2: прочитайте команду, которую скопировали

Скопированные команды скрывают символы. Маленькая -l — это --list-only, она относится к перечислению протоколов. Большая -L — это --location, она следует за перенаправлением HTTP. Это не варианты написания, и руководство, которое пишет одно, описывая другое, отправляет людей по пути перенаправления, который никогда не задумывался.

Переход по перенаправлению не исправляет путь хранилища доверия и не доказывает, что конечный хост — тот издатель, который вам нужен. Если команда взята из сообщения на форуме, перепечатайте её из собственных инструкций проекта, а не доверяйте вставке.

Шаг 3: выясните, какой ввод CA использует эта сборка

Начните с определения бинарного файла, потому что ответ зависит от того, как он скомпилирован:

curl --version

Запишите версию и бэкенд TLS. Сборка с собственным хранилищем доверия читает системное хранилище через библиотеку TLS, а сборка, указывающая на пакет, читает файл. Явный --cacert, настройка CURL_CA_BUNDLE или обёртка shell могут переопределить и то и другое, поэтому установка из пакета может даже не коснуться файла, который на самом деле даёт сбой.

Для файлового хранилища проверьте три вещи по порядку: существует ли путь, может ли его прочитать вызывающая учётная запись и содержит ли он ожидаемый материал CA. Пакет с неверными правами даёт сбой так же, как отсутствующий, и оба терпят неудачу до любого сетевого разговора о сервере.

Шаг 4: исправьте ввод, а не проверку

Восстановите поддерживаемую конфигурацию доверия через того, кому она принадлежит: пакет дистрибутива, ваше управление конфигурацией или документированную переменную среды. Цель — читаемый и правильный ввод CA для этого бинарного файла.

Не переключайте URL на HTTP, не добавляйте --insecure и не доверяйте сертификату, скопированному из необъяснённой загрузки. Каждое из этих изменений меняет то, что вы готовы принять, вместо того чтобы исправить то, что curl не смог прочитать, и изменение обычно переживает инцидент.

Справочник по номерам — каталог ошибок curl, и он достаточно короток, чтобы один раз внимательно его прочитать.

Шаг 5: скачайте, посмотрите, затем выполните

Получите установщик в файл, а не передавайте его в shell в той же команде. Это единственное изменение отделяет передачу, которую можно проверить, от кода, выполняемого с вашими правами.

curl -fL -o vpn-installer.sh https://example.invalid/install.sh
file vpn-installer.sh
head -n 40 vpn-installer.sh

Проверьте, что ответ — это ожидаемый скрипт, а не HTML-страница ошибки, уведомление о перенаправлении или пустой файл. Если издатель предоставляет контрольную сумму или подпись, проверьте её через их документированный процесс выпуска, а не через значение, процитированное в той же теме форума.

Помните, что HTTPS сделал, а чего не сделал. Он аутентифицировал транспорт до хоста, с которым вы связались; он не проверял содержимое скрипта и не говорит, заслуживает ли издатель доверия.

Шаг 6: держите шаги установки раздельно

Скачивание файла, установка клиента, настройка туннеля и проверка маршрутов — это четыре операции с четырьмя разными режимами отказа. Выполнение их по одной означает, что у ошибки позже в последовательности есть одна очевидная причина вместо четырёх кандидатов.

Если установка удалась и туннель поднялся, проверьте маршруты и один реальный пункт назначения, прежде чем закрыть заявку. Ошибка curl исправлена, когда простая curl -I https://example.invalid снова работает, а не когда установщик перестаёт жаловаться.

Похожие статьи