You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Ubuntu与Mono后如何解决TLSV1_ALERT_PROTOCOL_VERSION SSL错误?

解决Mono调用ASMX接口时的TLS协议版本错误

错误原因

该错误是TLS协议版本不兼容导致的:Mono默认可能使用了旧版TLS(如TLS 1.0/1.1)发起HTTPS请求,但Ubuntu 20.04搭配Let's Encrypt证书的Apache服务器通常已禁用这些不安全的旧协议,仅支持TLS 1.2及以上版本。

解决步骤

1. 全局配置Mono强制使用高版本TLS

编辑Mono的全局配置文件(如/etc/mono/config),在<configuration>节点内添加以下配置,强制Mono使用TLS 1.2/1.3:

<settings>
  <setting name="Mono.Security.Protocol.Tls.SslServiceProviderType" value="Btls" />
  <setting name="Mono.Security.Protocol.Tls.DefaultProtocol" value="Tls12" />
  <setting name="MonoBtls.TlsMinProtocol" value="Tls12" />
  <setting name="MonoBtls.TlsMaxProtocol" value="Tls13" />
</settings>

保存后重启Apache服务:

sudo systemctl restart apache2

2. 在ASMX代码中显式指定TLS版本

如果全局配置不生效,可以在发起请求的C#代码中直接设置TLS版本,确保放在请求初始化之前:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls13;

3. 验证Apache的SSL协议配置

检查Apache的SSL站点配置文件(如/etc/apache2/sites-available/[你的站点]-ssl.conf),确保仅启用安全的TLS版本:

SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite HIGH:!aNULL:!MD5:!3DES

配置完成后重启Apache,并用以下命令测试TLS 1.2连接是否正常:

openssl s_client -connect [你的域名]:443 -tls1_2

4. 更新Mono组件到最新补丁

尽管你已升级到Mono 6.12.0.200,仍可执行以下命令安装最新安全补丁:

sudo apt update && sudo apt upgrade mono-complete

内容的提问来源于stack exchange,提问作者stighy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 05:45:19