README.md

Введение

gost-curl — curl-подобный HTTP-клиент с поддержкой ГОСТ алгоритмов. Поддерживается только TLS 1.3, шифр “Кузнечик”. Шифр “Магма” не поддерживается.

Основано на библиотеке crypto-gost.

-> % ./gost-curl -h
gost-curl — консольный HTTP-клиент с поддержкой ГОСТ TLS 1.3 v0.1.0. Red Stars Systems 2026.
Использование: gost-curl [опции] <url>

Опции:
  -X, --request <метод>    HTTP-метод (по умолчанию: GET)
  -d, --data <тело>        Тело запроса (меняет метод на POST)
  -H, --header <Имя:Знч>   Заголовок запроса (можно повторять)
  -v, --verbose            Показать заголовки запроса и ответа
  -o, --output <файл>      Сохранить ответ в файл (по умолчанию: stdout)
  -L, --location           Следовать перенаправлениям (3xx)
  -k, --insecure           Отключить проверку сертификата и hostname (только разработка)
  -I, --head               Получить только заголовки (HEAD-запрос)
  -C, --continue-at <N|->  Докачка: -C - (авто) или -C <оффсет>
  -u, --user <user:pass>   Basic-аутентификация (user:pass или запрос пароля)
  -x, --proxy <url>        HTTP/SOCKS5-прокси (http://user:pass@host:port)
  -r, --range <N-N|N-|-N>  Диапазон байт
  -T, --upload-file <ф>    Загрузить файл (PUT)
  -F, --form <n=v|n=@ф>    Multipart form-data (можно повторять)
      --ca, --cacert <файл>       CA-сертификат(ы) (PEM или DER) для проверки сервера.
                                  PEM-файл может содержать цепочку доверенных CA
      --cert <файл>[:<пароль>]    Клиентский сертификат для mTLS.
                                  PEM — цепочка сертификатов (leaf + промежуточные).
                                  PKCS12/PFX — сертификат + ключ. Пароль опционально.
      --key <файл>                Закрытый ключ клиента (PEM или DER) для mTLS.
                                  Поддерживаются зашифрованные PEM-ключи.
      --passin <spec>             Источник пароля для PKCS12 или зашифрованного ключа.
                                  Форматы: pass:xxx, file:путь, env:VAR, stdin
      --connect-timeout с         Таймаут соединения (по умолчанию: 10)
      --read-timeout с            Таймаут чтения (по умолчанию: 30)
      --tlsv1.3                   Использовать TLS 1.3 (всегда включён)
      --progress-bar              Показать прогресс-бар со скоростью и ETA
      --speed-limit <байт/с>      Отмена при скорости ниже лимита
      --speed-time <сек>          Время замера скорости (по умолч. 30)
      --retry <N>                 Повтор при ошибке до N раз
      --retry-delay <сек>         Задержка между повторами (по умолч. 1)
      --limit-rate <скорость>     Ограничить скорость (500K, 2M, 1G)
      --no-verify-hostname        Отключить проверку совпадения имени хоста (CN/SAN) с сертификатом (по умолчанию включена)
  -h, --help               Показать эту справку

Примеры:
  gost-curl --ca ca.pem https://gost-server.example/api
  gost-curl --ca ca-chain.pem --cert client.pem --key client-key.pem \
            https://mtls-server.example/api
  gost-curl --cert client.p12:secret https://mtls-server.example/api
  gost-curl --cert client.p12 --passin file:pass.txt https://mtls-server.example/api
  gost-curl --cert encrypted.pem --key encrypted-key.pem --passin pass:secret \
            https://mtls-server.example/api
  gost-curl -k -X POST -d '{"key":"value"}' -H "Content-Type: application/json" \
            --ca ca.pem https://gost-server.example/api
  gost-curl -k -L -o page.html https://gost-server.example/redirect

Раздел для разработчиков

Для сборки необходимо установить Java 21+, maven.
Для получения бинарного файла необходимо дополнительно установить GraalVM 25+.

# Получение исполняемого jar-файла
make gost-curl-jar

# Получение бинарного исполняемого файла
make gost-curl-native

Лицензия

Автор: Михаил Ананьев.

Данный проект распространяется под Открытой лицензией на программное обеспечение “Рэд старс системс”, версия 1.0.
Текст лицензии находится в файле LICENSE или по ссылке.

Описание
Консольный HTTP-клиент (curl-аналог) с поддержкой ГОСТ TLS 1.3
Релизы
2026-06-14
последний
Конвейеры
0 успешных
0 с ошибкой
Разработчики