作者:JKNx2602931435 | 来源:互联网 | 2022-11-05 17:11
我正在尝试使HTTP / 2与ASP.Net Core 2.2一起使用。我正在Windows 10 x64 1809上进行测试。
我将基本模板与以下Web主机构建器一起使用:
public static IWebHostBuilder CreateWebHostBuilderKestrel(string[] args)
{
var builder = WebHost.CreateDefaultBuilder(args)
.UseStartup()
.UseKestrel(optiOns=>
{
options.Listen(IPAddress.Any, 35000,
lo =>
{
lo.Protocols = HttpProtocols.Http1AndHttp2;
lo.UseHttps(@"path to cert");
});
});
return builder;
}
使用Chrome时,它将接受证书并通过HTTPS显示网站。问题是,在devtools部分中检查网络请求时,它使用的是HTTP / 1.1,而不是h2。
使用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
不知道如何检查大多数这些设置。其中一些似乎是证书的设置,而其他一些似乎是特定于应用程序的。