SSIS访问Azure Blob Storage下载文件报算法不共通错误如何解决
问题根因
该报错为TLS加密协议版本不兼容导致:近期Azure存储服务默认禁用了TLS 1.0、TLS 1.1等低版本协议,要求客户端必须使用TLS 1.2及以上版本建立连接,你当前SSIS运行环境默认使用低版本TLS发起请求,因此触发算法不共通的报错。
排查步骤
- 检查SSIS运行服务器的.NET Framework版本,以及系统默认启用的TLS协议版本
- 核对当前代码引用的Azure Storage SDK版本,低于9.0的版本默认不会优先使用TLS 1.2
- 登录Azure门户查看对应存储账户的「配置」页,确认「最低TLS版本」设置是否为1.2及以上
解决方案
方案1:代码层强制指定TLS版本(最快生效)
在存储连接初始化代码(第115行)之前添加以下代码,强制通信使用TLS 1.2:
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
如果运行环境支持TLS 1.3,可以扩展配置兼容更高版本:
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12 | System.Net.SecurityProtocolType.Tls13;
方案2:系统级配置默认TLS版本(适合多SSIS包部署场景)
不需要修改代码,直接修改SSIS运行服务器的注册表配置:
- 打开注册表编辑器,定位到路径
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 - 新建2个DWORD类型的注册表项:
SchUseStrongCrypto,值设置为1SystemDefaultTlsVersions,值设置为1
- 若为64位操作系统,再定位到路径
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319,重复添加上述2个注册表项 - 重启服务器后配置生效
方案3:升级Azure存储SDK版本
将项目引用的Microsoft.Azure.Storage.Blob包升级到10.0.0及以上版本,新版本SDK默认优先使用TLS 1.2及以上协议,无需额外手动配置。
临时应急方案(不建议长期使用)
如需紧急恢复业务,可以暂时将Azure存储账户的最低TLS版本调整为TLS 1.0,确认业务恢复后再按上述正式方案修复,避免安全风险。
内容的提问来源于stack exchange,提问作者Akcil
相关产品推荐
相关产品推荐

