首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VM上的Cosmos DB仿真程序和主机MacOS上的Azure函数应用程序未通过SSL验证

VM上的Cosmos DB仿真程序和主机MacOS上的Azure函数应用程序未通过SSL验证
EN

Stack Overflow用户
提问于 2019-12-18 15:59:39
回答 1查看 716关注 0票数 2

问题:函数应用程序在mac上托管Cosmos仿真器时出现了SSL验证上的错误。经过多次的尝试和研究,当我开发一个天蓝色功能应用程序时,我一直无法让它工作.

Azure声称:对于Azure来说,不为Mac提供本机Cosmos DB仿真器的解决方法是,当应用程序在Mac中编写时,模拟器可以使用类似于的虚拟机管理程序托管在windows上。

我的设置是什么?1机器2操作系统独立运行。

在Mac (主机)上:

  1. Visual代码,为NodeJS.
  2. Azure函数核心工具运行Azure函数(2.0) (v.0.20.1)
  3. Azure Cosmos DB扩展(v.0.11.0)

在VM (Mac上的客服机)上:

  • Windows 10.
  • Cosmos DB模拟器(2.7.1.0)

Mac主机能够与来宾VM通信,反之亦然,没有问题。VM有自己的IP地址。

下面是Azure文档所做的工作:

模拟器在VM唯一IP地址下自动生成自签名证书.证书被正确地导出,并导入到Mac的KeyChain访问中。虽然cosmos DB仿真程序的资源管理器可以在Safari中呈现(在接受浏览器中的cert之后),而MAC可视化演播室代码上的Cosmos DB扩展可以连接到模拟器(创建DB和容器、手动插入记录等),但函数应用本身在执行函数应用程序时拒绝连接,表示SSL证书没有通过验证。

Cosmos的连接字符串在函数应用程序的local.setting.json上被更改为(在VM中使用默认AccountKey的IP地址):

代码语言:javascript
复制
AccountEndpoint=https://10.37.129.3:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==

Cosmos模拟器在CMD上使用以下命令运行:

代码语言:javascript
复制
Microsoft.Azure.Cosmos.Emulator.exe /AllowNetworkAccess /Key=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==

windows机器关闭了防火墙。

函数应用程序使用CosmosDB 绑定。它没有使用成熟的Cosmos DB或Cosmos。

但是,我不知道如何从函数App中通过SSL验证。

与此问题相关的任何解决方案(或类似的)似乎都用于运行成熟的Cosmos DB SDK或Cosmos DB REST,其中您需要向DocumentClient构造器提供一个HttpClientHandler,该构造器有自己的ServerCertificateCustomValidationCallBack实现。这适用于C#。对于节点,在调用process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = 0;之前添加此https.request()。类似地,对于Node,有一个名为DisableSSLVerification的标志,当设置为false时,它应该再次传递SSL verification...But,在一个函数应用程序上,我们没有机会这样做。后台的Azure提供运行函数应用程序代码的服务器,并为您调用DocumentClient .我们不实例化宇宙数据库实例或设置Node.js服务器来运行我们的代码.

其他尝试过的解决方案:调整后的Visual代码关闭代理严格SSL。

有人能解决这个问题吗.似乎我唯一的选择是重构函数应用程序代码,忽略轻松的Cosmos DB函数应用程序绑定。从微软看来,这似乎是错误的,而且由于绑定是与Cosmos DB通信的最简单的方式,这是相互矛盾的。

谢谢你,-JM

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-19 00:07:59

Cosmos DB绑定隐藏了更改SSL证书配置的可能性,因此无法更改该配置。它旨在简化最常见的场景,但您要实现的场景需要一些高级更改,这不仅仅是一个运行在云中试图连接到Cosmos DB实例的函数。在一个正常的场景(运行在云上的函数)中,您永远不希望禁用SSL。

您可以选择使用您自己定制的SDK客户端,只需确保将实例维护为全局/静态:https://learn.microsoft.com/azure/azure-functions/manage-connections#cosmosclient-code-example-javascript

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59395827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档