Я пытаюсь заставить HTTP / 2 работать с ASP.Net Core 2.2.Я тестирую на Windows 10 x64 1809.
Я использую базовый шаблон со следующим компоновщиком веб-хоста:
public static IWebHostBuilder CreateWebHostBuilderKestrel(string[] args)
{
var builder = WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseKestrel(options =>
{
options.Listen(IPAddress.Any, 35000,
lo =>
{
lo.Protocols = HttpProtocols.Http1AndHttp2;
lo.UseHttps(@"path to cert");
});
});
return builder;
}
При использовании Chrome он принимает сертификат и показывает сайтпо HTTPS.Проблема в том, что он использует HTTP / 1.1, а не h2 при проверке сетевых запросов в разделе devtools.
Использование openssl s_client -connect 'host:35000' -cipher "EDH"
дает следующий вывод:
New, TLSv1.2, Cipher is DHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : DHE-RSA-AES256-GCM-SHA384
Session-ID: FA0F0000C66FFFD36BE15AE79B2F48DF631EB83D0425DD534DAA278622CB30AE
Session-ID-ctx:
Master-Key: 2B10E9FD71B42328CAFAFBE18789777132565A98CE8CFD9B8E0452F6490929CB6D1B20AB57A000EDBFF40372C93EB547
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1552937526
Timeout : 7200 (sec)
Verify return code: 20 (unable to get local issuer certificate)
Extended master secret: yes
---
Единственное, чтовыглядит неуместным «Нет согласованного ALPN» и «Поддерживается безопасное повторное согласование».Я что-то здесь упускаю?
На сайте msdn перечислены следующие требования :
TLS version 1.2 or later
Renegotiation disabled
Compression disabled
Minimum ephemeral key exchange sizes:
Elliptic curve Diffie-Hellman (ECDHE) [RFC4492] – 224 bits minimum
Finite field Diffie-Hellman (DHE) [TLS12] – 2048 bits minimum
Cipher suite not blacklisted
Не знаю, как мне проверить большинство этих настроек.Некоторые из них кажутся настройками сертификата, а другие - приложением.