如何在Azure Function中使用msCrypto解决SAP HANA SSL连接报错
问题解答
msCrypto兼容性说明
msCrypto是Windows系统原生加密接口,无专用主机的Azure Function(消费计划、弹性Premium计划)的Windows运行沙箱原生支持该接口,不需要配置专用主机即可正常运行。
报错原因
你遇到的Connection failed (RTE:[1000013] The system cannot find the file specified错误,是启用SSL后SAP HANA驱动未找到对应信任根证书导致的:本地运行环境已预安装HANA实例的根CA证书,Azure Function运行沙箱默认没有该证书,驱动读取证书失败抛出该错误。
解决步骤
- 从SAP管理员处获取你要连接的HANA实例对应的根CA证书文件(一般为PEM格式的
.crt或.pem文件) - 将证书文件放入Azure Function项目根目录,右键设置文件属性的「复制到输出目录」为如果较新则复制,确保部署时证书会一起打包到运行环境
- 在HANA连接字符串中添加两个参数:
cryptoProvider=msCrypto显式指定加密提供程序sslTrustStore="证书路径"证书路径可以使用Azure Function固定的站点根目录变量拼接,例如%HOME%\site\wwwroot\HanaRootCA.crt,也可以通过C#代码动态生成准确路径:Path.Combine(Environment.GetEnvironmentVariable("HOME"), @"site\wwwroot\HanaRootCA.crt")
- 测试环境临时验证时可以在连接字符串添加
validateCertificate=false跳过证书校验,该配置存在安全风险,禁止用于生产环境 - 确认你的Azure Function使用的是Windows运行时,msCrypto仅适配Windows环境,如果使用Linux运行计划需要将加密提供程序切换为openssl
- 如果修改后仍报错,可以在Azure Function的「配置」-「应用程序设置」中添加配置项
WEBSITE_LOAD_USER_PROFILE=1,开启用户配置文件加载,满足msCrypto访问证书存储的权限要求
内容的提问来源于stack exchange,提问作者Alzorz
相关产品推荐
相关产品推荐

