zaLinux.ru

При использовании s_client всегда возникает ошибка «HTTP/1.1 400 Bad Request» (РЕШЕНО)


На некоторых серверах при использовании s_client и попытке ввести любые HTTP заголовки возникает ошибка «400 Bad Request».

Как можно понять из текста ошибки — сервер получил плохой запрос. Причины могут быть разными:

  • ошибки в синтаксисе HTTP заголовков
  • некоторые сервера требуют CR+LF вместо символа line feed, отправляемого при нажатии Enter

Например, подключимся к серверу:

openssl s_client -connect w-e-b.site:443

Попробуем ввести первый заголовок и нажмём Enter:

HEAD / HTTP/1.1

Сразу после этого возникнет ошибка — ваш браузер отправил запрос, который этот сервер не может понять:


HTTP/1.1 400 Bad Request
………………..
………………..
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>

В данном случае необходимо использовать опцию -crlf, она переводит line feed от терминала в CR+LF, как этого требуют некоторые серверы:

openssl s_client -connect w-e-b.site:443 -crlf

После этого сервер нормально пример HTTP заголовки.

Для того, чтобы s_client перестал ожидать ввод и отправил данные на сервер, нажмите Enter дважды.

Для глубокого понимания OpenSSL смотрите также полное руководство: «OpenSSL: принципы работы, создание сертификатов, аудит».


Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *