Проверьте, будет ли X509Certificate2 работать с http / 2 в Google Chrome и Mozilla Firefox. - PullRequest
1 голос
/ 08 октября 2019

у нас запущено приложение Dotnet Core 3.0, которое предоставляет веб-API через Kestrel. По умолчанию Kestrel установил доступные протоколы на Protocols.Http1AndHttp2.

. На одном из наших тестовых компьютеров оказалось, что http / 2 не работает в сочетании с Google Chrome (77.0.3865.90). Браузер отображает сообщение об ошибке ERR_HTTP2_INADEQUATE_TRANSPORT_SECURITY. Откат к http1 в этом случае не работает, потому что браузер поддерживает http / 2 в целом. Microsoft Edge, кстати. поддерживает запрос одной и той же конечной точки через http / 2.

Я проверил сертификат на моей машине разработки, и оказалось, что это работает, как ожидалось. Так что, похоже, проблема не в самом сертификате, а в сервере, на котором размещено приложение. Моя локальная машина работает под управлением Windows 10 Pro (1903). Сервер работает под управлением Windows Server 2012 R2 Datacenter (6.3.9600).

Приложение будет размещаться на серверах наших клиентов в виде автономного пакета, и мы не будем оказывать влияние на то, на каких серверах будет работать API.

Вместополностью отключив http / 2, мы бы хотели проверить, все ли браузеры примут предоставленный сертификат в сочетании с http / 2. Я не уверен, как это выяснить на стороне сервера. Нам кажется, что это какая-то проблема с предоставленными комплектами шифров, но я не знал, как проверить совместимость на стороне сервера.

У кого-нибудь есть идеи, как проверить совместимость?

1 Ответ

2 голосов
/ 08 октября 2019

Это не сертификат, а наборы шифров.

Запустите ваш сайт с помощью этого инструмента: https://www.ssllabs.com/ssltest/ (или загрузите и используйте https://testssl.sh, если он недоступен, внутренний сайт)и вы увидите настроенные комплекты шифров.

HTTP / 2 помещает в черный список старые шифры, и Chrome не будет использовать HTTP / 2, если они настроены. Список здесь: https://tools.ietf.org/html/rfc7540#appendix-A, но в основном вам, вероятно, следует использовать TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 для Chrome.

В этом посте рассказывается, как изменить их для IIS: https://medium.com/@rootsecdev/configuring-secure-cipher-suites-in-windows-server-2019-iis-7d1ff1ffe5ea

...