Ubuntu 22.04本地部署.NET应用遇预登录握手错误求助
Ubuntu 22.04部署.NET应用SQL Server连接SSL握手失败的解决思路
根据你提供的错误日志,核心问题出在OpenSSL配置模块识别失败,导致SSL预登录握手出错。以下是针对性的解决步骤:
修复OpenSSL配置文件
错误提示unknown module name是因为Ubuntu 22.04默认使用OpenSSL 3.0,部分旧配置中的模块名称已变更。- 备份当前配置:
sudo cp /etc/ssl/openssl.cnf /etc/ssl/openssl.cnf.bak - 打开配置文件检查,移除或替换过时的模块引用(比如旧的
engine模块声明),或者直接使用系统默认的OpenSSL 3.0配置模板。
- 备份当前配置:
安装兼容的OpenSSL库
部分.NET版本依赖OpenSSL 1.1,而Ubuntu 22.04默认仅预装OpenSSL 3.0,需手动安装兼容库:sudo apt-get update && sudo apt-get install libssl1.1调整SQL Server连接字符串
强制指定SSL协议或临时关闭加密(仅测试用,生产环境不建议关闭加密):- 指定TLS 1.2协议的连接字符串示例:
Server=你的数据库地址;Database=你的数据库名;User Id=用户名;Password=密码;Encrypt=True;SslProtocol=Tls12; - 测试时临时关闭加密:
Server=你的数据库地址;Database=你的数据库名;User Id=用户名;Password=密码;Encrypt=False;
- 指定TLS 1.2协议的连接字符串示例:
升级.NET运行时/SDK
.NET 6及以上版本对OpenSSL 3.0有更好的兼容性,若当前使用的.NET版本较低,执行以下命令升级(以.NET 6为例):sudo apt-get update && sudo apt-get install dotnet-sdk-6.0信任SQL Server SSL证书
如果SQL Server使用自签名证书,需将证书导入Ubuntu系统信任存储:sudo cp 你的证书文件.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates
内容的提问来源于stack exchange,提问作者Benjamin Heap
相关产品推荐
相关产品推荐

