Я создал веб-сервис, используя Restbed, который работает на сервере Debian. Я могу установить соединение и отправлять запросы на него, когда он работает по HTTP. Однако, когда я добавляю настройки SSL для запуска службы как HTTPS, я сталкиваюсь с проблемой: я получаю ошибку рукопожатия SSL, когда я пытаюсь соединиться с моим собственным клиентом. Я реализовал пример клиента Restbed, который работает в Windows и Linux, но у обоих одинаковая проблема. Кроме того, я реализовал еще один клиент в Python, но все же, такая же ошибка возникает. Я должен отметить, что во всех случаях я отключаю проверку сертификата.
Я также проверил с почтальоном, и я просто получаю сообщение об ошибке: «Не удалось получить ответ», хотя я отключил параметр «Проверка сертификата SSL».
Мне просто интересно, что не так со всеми этими клиентами, и почему Chrome может легко подключаться?
Клиенты могут подключаться к сервису, если я запускаю их обоих на одном сервере. Эта проблема возникает, когда я пытаюсь подключиться из удаленной системы.
Далее я включил соответствующие коды.
Коды сервера Restbed:
auto resource = make_shared< Resource >();
resource->set_path("/resource");
resource->set_method_handler("GET", get_method_handler);
auto ssl_settings = make_shared< SSLSettings >();
ssl_settings->set_http_disabled(true);
ssl_settings->set_private_key(Uri("file:///tmp/pv.key"));
ssl_settings->set_certificate(Uri("file:///tmp/crt.crt"));
ssl_settings->set_temporary_diffie_hellman(Uri("file:///tmp/dh768.pem"));
auto settings = make_shared< Settings >();
settings->set_ssl_settings(ssl_settings);
((Service*)RestfulService)->publish(resource);
((Service*)RestfulService)->start(settings);
Сервер регистрирует эту ошибку после получения запроса от клиента: «Сбой рукопожатия SSL,« неожиданное сообщение »». Коды перезагруженных клиентов:
auto request = make_shared< Request >(Uri("https://X.X.X.X/resource"));
request->set_header("Accept", "*/*");
auto settings = make_shared< Settings >();
auto response = Http::sync(request, settings);
for (const auto header : response->get_headers())
{
fprintf(stderr, "Header '%s' > '%s'\n", header.first.data(), header.second.data());
}
if (response->has_header("Transfer-Encoding"))
{
Http::fetch("\r\n", response);
}
else
{
auto length = 0;
response->get_header("Content-Length", length);
Http::fetch(length, response);
}
fprintf(stderr, "Body: %.*s...\n", 3, response->get_body().data());
Задача ещё не решена.
Других решений пока нет …