Я написал сервер REST, который прослушивает порт 8000. Я пытаюсь вызвать api с того же компьютера с помощью команды cURL -
curl -H "accept: application/json" https://localhost:8000/status -v
Я получаю следующую ошибку
* About to connect() to localhost port 8000 (#0)
* Trying ::1...
* Connected to localhost (::1) port 8000 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* NSS error -12263 (SSL_ERROR_RX_RECORD_TOO_LONG)
* SSL received a record that exceeded the maximum permissible length.
* Closing connection 0
curl: (35) SSL received a record that exceeded the maximum permissible length.
Я попытался обойти проверку сертификата с помощью опции -k, но безрезультатно. Что мне здесь не хватает? Прокомментируйте, если требуется дополнительная информация.
РЕДАКТИРОВАТЬ: Мой друг предложил попробовать использовать только http в команде cURL. Затем он обошел проверку SSL, и все заработало. Но что не так с https? Нужно ли мне также устанавливать сертификат для localhost? Кроме того, почему не работает опция -k?





My friend suggested to try with only http in the cURL command. Then it bypassed SSL check and it worked.
Похоже, на вашем сервере вообще не включен SSL. Вот почему HTTP работал, а HTTPS - нет. Использование HTTP не привело к обходу какой-либо проверки SSL, потому что нет SSL с HTTP и, следовательно, нет проверки SSL, которую нужно было бы обойти.
Also, why didn't -k option work?
Параметр -k используется для пропуска проверки сертификата для соединений SSL (HTTPS). Но это может работать только при наличии SSL-соединения. Поскольку ваш сервер вообще не поддерживает SSL, -k не поможет.
Do I need to install certificate for localhost also?
Вам необходимо сначала включить SSL на вашем (неизвестном) сервере. Если вы закодировали свой собственный сервер, это означает дополнительное кодирование. И, как только сервер вообще может использовать SSL, вам также необходимо настроить сертификат, который сервер может предоставить клиенту.
В моем случае мне пришлось проверить конфигурацию моего виртуального хоста. Мне нужно было определить конкретный виртуальный хост на основе имени для домена.
Возможно, кто-то просто хочет сначала провести быстрый тест и не хочет настраивать виртуальный хост, тогда он столкнется с этим сообщением об ошибке.
Ваш порт 8000 отвечает на запросы SSL ?! Настроен ли сертификат?