我有一个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;
答案 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