本地Docker容器中Azure Cosmos DB SSL连接错误排查求助
问题原因分析
错误日志
Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.MyCoFunc'. Microsoft.Azure.WebJobs.Extensions.CosmosDB: Cannot create container information for products in database cosmicworks4 with lease leases in database cosmicworks4 : The SSL connection could not be established, see inner exception. System.Net.Http: The SSL connection could not be established, see inner exception. System.Private.CoreLib: The remote certificate is invalid because of errors in the certificate chain: UntrustedRoot.
[2023-12-23T16:54:16.993Z] Error indexing method 'Functions.MyCoFunc'
核心原因梳理
- 证书导入层级错误:大概率是把证书导入到了「当前用户」的证书存储区,而非本地计算机的「受信任的根证书颁发机构」。Azure Functions依赖的.NET运行时默认优先读取本地计算机级别的根证书库,用户级证书不会被自动加载用于SSL验证。
- 证书导出/导入流程不完整:导出Docker Cosmos DB模拟器证书时,可能未选择正确格式(需导出为CER格式并导入根证书库,或PFX格式包含完整证书链),或者导入时未将证书放置到「受信任的根证书颁发机构」容器中,导致系统无法识别其为可信根证书。
- 进程权限限制:VS Code运行Azure Functions的终端进程可能没有读取本地计算机证书存储区的权限,即便证书位置正确,也无法获取并验证证书链。
- 证书与访问地址不匹配:Docker Cosmos DB模拟器生成的证书通用名称(CN)可能不是
localhost,而你的连接字符串使用https://localhost:8081访问,导致SSL验证时域名不匹配,进而被归类为根证书不信任错误。
补充验证点
检查local.settings.json中DBConnectionString的格式,确保是类似:
"DBConnectionString": "AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
内容的提问来源于stack exchange,提问作者toto'
相关产品推荐
相关产品推荐

