Внедрение HTTPS-сервера с использованием Rustls с Hyper in Rust - PullRequest
0 голосов
/ 12 апреля 2020

Я пытаюсь реализовать сервер HTTPS, используя Rustls с Hyper, но не могу получить правильный пример того, как реализовать то же самое. И для этого я следовал и попробовал пример, приведенный в репозитории hyper-rustls здесь (пример сервера Hyper Rustls)

Это всегда дает эту ошибку

FAILED: error accepting connection: TLS Error: Custom { kind: InvalidData, error: AlertReceived(CertificateUnknown) }

Я совершенно новый для Rust и, следовательно, не знаю, как правильно реализовать HTTPS поверх Hyper. Я также прошел вопрос, связанный с этим здесь

Но все еще не смог найти решение. Если требуется дополнительная информация, сообщите мне об этом.

1 Ответ

1 голос
/ 12 апреля 2020

Похоже, ваша проблема не в Hyper или Rust, а в TLS. По умолчанию, когда вы устанавливаете sh соединение через HTTPS, клиент проверяет подлинность сертификата сервера. Сертификат должен быть подписан доверенным органом: подробности см., Например, на этой странице .

. Для проверки используйте curl:

$ curl https://localhost:1337/echo -X POST -v --insecure
...
*  SSL certificate verify result: self signed certificate in certificate chain (19), continuing anyway.
...
< HTTP/2 200 
< date: Sun, 12 Apr 2020 12:45:03 GMT
< 
* 1008. * Так что это работает отлично. Если вы уберете флаг --insecure, curl откажется установить sh соединение:
$ curl https://localhost:1337/echo -X POST -v
...
curl: (60) SSL certificate problem: self signed certificate in certificate chain
More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

Чтобы это исправить, вам нужно:

  1. Использовать правильно подписанный сертификат вместо самозаверяющего сертификата, или
  2. Настройте клиента на отсутствие проверки сертификата, или
  3. Настройте клиента на доверие к вашему самозаверяющему сертификату.

В производстве ваш единственный выбор (1). Пока вы развиваетесь, вы можете избежать неприятностей с (2) или (3).

...