将项目从 microsoft .net Core 3.1 升级到 .NET 8.0 后,我无法再通过 HttpClient 调用连接到旧的外部服务器。 错误是: OpenSslCryptographicException:错误:0A000410:SSL 例程::sslv3 警报握手失败 问题出在我制作了 docker 镜像并且软件在容器中运行之后。
解决方案来自https://github.com/dotnet/runtime/issues/107172。
要应用第二种解决方案来修改 /etc/ssl/openssl.cnf 文件,我找到了这个解决方案: 我从容器中提取了.net8.0版本的/etc/ssl/openssl.cnf文件,我通过插入以下指令修改了该文件:
[openssl_init]
ssl_conf = ssl_sect
[ssl_sect]
system_default = system_default_sect
[system_default_sect]
CipherString = DEFAULT@SECLEVEL=2
在项目中,我将修改后的 openssl.cnf 文件放入 dockerfile 中,并使用指令:
COPY Docker/openssl_v8.cnf /etc/ssl/openssl.cnf
我应用了更改后的文件