当需要 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 中使用通配符