如何通过ASP.Core Kestrel中的代码禁用弱密码服?

时间:2019-08-23 15:02:10

标签: security ssl asp.net-core kestrel-http-server

我有一个Web API,由使用Kestrel Web服务器的简单ASP.Core应用程序托管。该Web服务器在Ubuntu linux(没有IIS安装)下的普通ASP.Core docker容器中运行。

我们使用SSL服务器测试来确定SSL配置是否被认为是安全的: https://www.ssllabs.com/ssltest/index.html

目前,我们获得了F-评级(最糟糕的是,这很糟糕)。

我们仅启用了TLS 1.2,这很好,但是显然我们的TLS 1.2配置支持以下被认为非常不安全的密码套件:

  

此服务器支持匿名(不安全)套件(有关详细信息,请参见下文)。成绩设置为F。

     

TLS_ECDH_anon_WITH_AES_256_CBC_SHA(0xc019)不安全256   TLS_ECDH_anon_WITH_AES_128_CBC_SHA(0xc018)不安全128

如何在容器中运行的Kestrel Web服务器上禁用这些加密机制?最好通过向应用程序中添加代码,使我们仍然可以独立于配置。

我已经通过添加以下代码来禁用不安全的SSLv3,TLS 1.0和TLS 1.1:

httpsOptions.SslProtocols = System.Security.Authentication.SslProtocols.Tls12;

1 个答案:

答案 0 :(得分:0)

解决方案是将 ASP Core 2.2 升级到 ASP Core 3.0-preview8

此问题已在ASP Core 3.0-preview6和更高版本中修复。默认情况下,不安全的密码服现已禁用。 SSL测试等级从F变为B,而无需更改代码。在此处查看有关Kestrel密码套件的详细信息:https://github.com/aspnet/AspNetCore/issues/9349

ASP Core 3.0-preview8被认为是生产稳定的,并且从2.2迁移服务器很容易(即使具有IdentityServer4库依赖性)。以下是我们迁移服务器时遵循的说明: https://docs.microsoft.com/en-us/aspnet/core/migration/22-to-30