curl: проверить HTTPS через собственный CA bundle

Категория: Bash · Язык: Bash · Обновлено:

Если curl не доверяет сертификату внутреннего HTTPS-сервера, укажите PEM-файл с доверенным центром сертификации через --cacert. Проверка TLS при этом остаётся включённой: клиент проверяет цепочку сертификатов и имя узла. Не отключайте проверку сертификата ради обхода ошибки.

Передать CA bundle одному запросу

Bash
curl --cacert ./company-ca.pem \
  --fail --show-error --silent \
  --output /dev/null \
  --write-out '%{http_code}\n' \
  https://api.example.test/health

company-ca.pem должен содержать PEM-сертификат корневого или промежуточного CA, которому вы доверяете. Замените примерный путь и домен своими значениями. --fail завершает запрос с ошибкой при HTTP 4xx/5xx; --write-out печатает код ответа.

Частые ошибки

  • curl: (77) обычно указывает на неверный путь или формат файла CA.

  • Ошибка имени сертификата не исправляется добавлением CA: проверьте SAN и URL.

  • Не используйте -k или --insecure в рабочем коде: они отключают проверку подлинности сервера.

Файл можно временно назначить через --cacert; для постоянной настройки у curl есть переменная CURL_CA_BUNDLE, если TLS backend её поддерживает. См. curl man page — --cacert.