当需要 ssl 为真时无法调用 EWS

Posted

技术标签:

【中文标题】当需要 ssl 为真时无法调用 EWS【英文标题】:Unable to call EWS when require ssl is true 【发布时间】:2016-10-15 14:27:04 【问题描述】:

我在开发环境中安装了 Exchange server 2010。我正在尝试从也在开发环境中的节点 js Web 应用程序中调用 EWS 服务。

当我在 IIS 管理器的 EWS 网站上设置 require ssl 时,我收到 403 错误。 这很正常,因为我在应用程序中的 URL 端点是 http,确切地说:http://192.168.50.192/EWS/Exchange.asmx

但是当我尝试使用 url https://192.168.50.192/EWS/Exchange.asmx 那是https,我要超时了。

我在 Web 表单上输入此 URL,然后以编程方式编写我发送到此 URL 的 SOAP 请求。

我尝试启动 ngrok 并在本地使用带有 https 的整个应用程序,但我得到了相同的结果。

如果 ssl 证书是问题,ngrok 有有效的证书。

请指教。

我需要在 IIS 上应用任何其他设置吗?

【问题讨论】:

你能分享发出请求的代码吗?另外,您使用什么来生成服务器 - express,Node 的本机 HTTPS?链中会有中间证书吗? 【参考方案1】:

您能否检查错误详细信息,或者您有可以检查的日志?

通过阅读问题,至少有两件事可能导致该问题,如果您的应用程序未共享同一个域,您可能会遇到相同域策略的问题,为此您可以使用 CORS 策略修复它.

如果问题与 SSL 证书无关,则您的问题可能与 CORS 政策有关(How to allow CORS?、https://senecacd.wordpress.com/2013/02/15/enabling-cors-on-a-node-js-server-same-origin-policy-issue/)

如果这与 SSL 有关,那么您需要创建一个自签名 SSL 证书并尝试使用它。 (不过,您需要禁用 SSL 对等验证。)

【讨论】:

微软没有为 Exchange Servers 实现 CORS,不能调用哪个使用 CORS。【参考方案2】:

你可以尝试两件事:

    以主机名/fqdn (exchserver/exch.domain.com) 格式而不是 IP 地址生成 SSL 证书。使用 Exchange Admin Center/IIS 导入此 ssl 证书和链。还要在运行 nodejs 应用程序的客户端计算机中信任此证书。 指示nodejs忽略服务器证书,将此行放在所有代码process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";之前,取自Ignore invalid self-signed ssl certificate in node.js with https.request?

如果您在 nodejs 应用中广泛使用 EWS,您应该考虑使用 ews-javascript-api node 模块

【讨论】:

以上是关于当需要 ssl 为真时无法调用 EWS的主要内容,如果未能解决你的问题,请参考以下文章

CORS:当凭据标志为真时,无法在 Access-Control-Allow-Origin 中使用通配符

CORS:当凭据标志为真时,无法在 Access-Control-Allow-Origin 中使用通配符

当 html5Mode 为真时,AngularJs 路由对服务器进行 HTTP 调用

当属性和数据值为真时 WPF 触发

当地图的条件为真时,我只需要将结果分配给“值”

Swift 3 - 当布尔为真时如何移动精灵节点?