gpt4 book ai didi

c# - Kestrel 和 OpenSSL 密码套件

转载 作者:行者123 更新时间:2023-11-30 23:09:28 25 4
gpt4 key购买 nike

如何从 Linux docker 容器中更改可用于 OpenSSL/Kestrel 的可用密码套件?

首先,让我们从一些环境细节开始:

  • 我们使用通过 powershell 连接的 Linux docker 容器(Docker 版本 17.06.0-ce,内部版本 02c1d87)
  • 它托管一个用 C# 编写的 ASP.Net Core (netcore 1.1) 网络应用。
  • 主要针对 .NetStandard 1.4/1.6 编写,但计划转向 2.0。
  • 我们使用 Kestrel 作为 docker 容器上的网络服务器
  • 据我所知,Kestrel 在后台使用 openSSL (1.0.1)。

我的 Program.cs 看起来像这样,它设置了红隼:

builder.UseKestrel(o => o.UseHttps(new HttpsConnectionFilterOptions
{
SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls11,
CheckCertificateRevocation = true,
ClientCertificateMode = ClientCertificateMode.AllowCertificate
ServerCertificate = new X509Certificate2(certificate.Pfx, certificate.Password)
}))
.UseUrls(bindTo);

关键是:

SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls11,

无论我在这里设置什么值(Tls12、Tls11、Tls 或这些的任何子集),它似乎都不会影响连接可用的密码套件。我正在查看我的 URL 的 sslLabs 报告,由于旧协议(protocol)上 RC4 密码的可用性,该 URL 的上限为 B 级。这是我想要解决的问题,我相信只支持 TLS1.1 和 1.2 应该可以解决这个问题。

但是例如,正如您在上面看到的,我没有提到 TLS 1.0,但它在报告中可用,这让我有点难过。

它实际上是在使用代码,还是从其他地方获取可用的密码?因为看起来 SslProtocols 属性的值确实没有区别。

当使用 Apache 时,您可以通过配置文件 (httpd.conf) 配置可用的密码套件,所以我想 kestrel 可能有一个文件来做同样的事情,但我没能找到一个。普遍的共识似乎是用代码处理它。据我所知,我做了哪些?

然后我考虑使用 Apache 作为面向 Internet 的 Web 服务器来处理密码管理,然后将请求代理到 kestrel,但这将违反该项目的契约(Contract),我们指定所有数据在期间保持加密运输的每个阶段。在将数据重新加密以传输到 kestrel 之前,先在 Apache 中解密数据的过程不可行。

然后我想也许 OpenSSL 有一个类似于 Apache 的配置文件,我可以只更改该配置来实现我需要的。我在我们的文件系统中找到了这两个文件:

/usr/lib/ssl/openssl.cnf
/etc/ssl/openssl.cnf

但是当与 Apache 配置文件比较时,它们都没有我希望看到的任何密码套件列表。或者也许是,我只是误解了文件格式?

我也遇到过这种可用于配置可用密码套件“SSL_CTX_set_cipher_list”的方法,但我认为这仅在 C++ 中可用,并且我没有找到类似的 C# 功能/包装器。我想在设置网站之前推送到 docker 时,可以编写一个 C++ 程序来设置密码套件吗?但这听起来真的很老套,我更愿意让网站自己处理它。

长话短说,我的想法很快就用完了。因此,非常感谢您的任何意见。感谢您提供的任何帮助!

最佳答案

似乎在 ASP.NET Core 3.0 中解决了,您可以在“CipherSuitesPolicy”下看到它 https://learn.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-3.0

关于c# - Kestrel 和 OpenSSL 密码套件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45814484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com