惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
MyScale Blog
MyScale Blog
Recent Announcements
Recent Announcements
N
Netflix TechBlog - Medium
GbyAI
GbyAI
Vercel News
Vercel News
The GitHub Blog
The GitHub Blog
阮一峰的网络日志
阮一峰的网络日志
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
Visual Studio Blog
Martin Fowler
Martin Fowler
腾讯CDC
大猫的无限游戏
大猫的无限游戏
aimingoo的专栏
aimingoo的专栏
云风的 BLOG
云风的 BLOG
J
Java Code Geeks
WordPress大学
WordPress大学
P
Proofpoint News Feed
雷峰网
雷峰网
酷 壳 – CoolShell
酷 壳 – CoolShell
有赞技术团队
有赞技术团队
人人都是产品经理
人人都是产品经理
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Y
Y Combinator Blog

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
gost-curl — консольный HTTP-клиент с поддержкой ГОСТ TLS 1.3
mikhail_ananev · 2026-06-18 · via Все публикации подряд на Хабре

Простой

3 мин

86

Введение

Недавно мне понадобился консольный клиент для отладки сайта, который закрыт TLS 1.3 на ГОСТ-алгоритмах. Из доступных у меня были варианты:

  • curl в составе дистрибутива от известного крипто-провайдера.

  • собрать самому нативный curl из исходников, с openssl + ручной патч ГОСТ TLS 1.3.

Ни тот, ни другой вариант не были удобными для повседневной автоматизации для разных ОС. В итоге я написал на Java урезанный аналог curl, который умеет работать с TLS 1.3 на ГОСТ.

Данный инструмент может быть полезен разработчикам, devops-инженерам, QA и администраторам. gost-curl самодостаточен, не требует установки openssl или каких-то крипто-провайдеров, работает в разных ОС.

Исходные тексты и бинарные файлы для Linux и Macos доступны по ссылке. Для остальных ОС есть jar-файл.

Основные возможности

gost-curl — предназначен для работы только по TLS 1.3 и только с использованием ГОСТ-алгоритмов. Для всего остального есть нативный curl, доступный в любой ОС.

Поддерживается только алгоритм "Кузнечик", российские OID-кривые и форматы сертификатов, "Магма" не поддерживается.

Важной особенностью инструмента является поддержка PEM/DER/PKCS12 форматов, поэтому пользователям не придется заниматься конвертацией ключей.

Доступные опции:

-> % ./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

Не стоит ожидать от клиента большой скорости, т.к. у ГОСТ-алгоритмов нет аппаратного ускорения, какие есть у AES. Но от 30-50 МБ/c он выдает, что вполне приемлемо для повседневных задач.

Лицензия свободная и разрешает использование в любых сферах.