Ошибка curl 77: пути проверки сертификата при установке VPN
Ошибка 77 — это сбой локального ввода CA, а не плохой сертификат сервера. Найдите файл доверия, который читает curl, исправьте его и просмотрите скрипт перед запуском.
Вы вставляете однострочную команду установщика из руководства, нажимаете 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 снова работает, а не когда установщик перестаёт жаловаться.