2012-05-08 70 views
2

我想要做的是使用SSL创建一个Web服务(我建立的)。它似乎并没有工作。一些相关信息:无法通过HTTPS访问SOAP Web服务

  • 一切工作正常使用HTTP。这个问题只发生在我使用HTTPS时。
  • 实际的错误信息被输出如下:

SOAP-ERROR:解析WSDL:无法从...加载:未能加载外部实体...

  • 的服务在PHP中实现。
  • 如果我运行php -m或检查phpinfo()openssl似乎已正确安装。
  • SSL证书似乎工作正常否则。我可以在网站的其他部分使用HTTPS;它只是有问题的Web服务。

  • 如果我试着通过浏览器通过HTTPS访问WSDL,它工作正常。如果我尝试访问某个SOAP端点URL,则会收到错误消息。

  • 我写了一个最小化的PHP脚本来尝试实际调用服务。它会在尝试检索WSDL本身时收到错误消息。
  • Web服务器是在Debian
  • 运行Apache它似乎并不成为一个代码问题。我有相当的代码在开发服务器上运行,它工作正常,即使使用HTTPS。
  • 生产系统运行在代理系统上,nginx在前面。看起来这很可能与问题有关,但不知道从哪里开始解决这个问题。
+0

是HTTPS证书有效这个漂亮的指南? – Robbie

+0

你使用(恶)PHP本地SOAP扩展(ihateitihateitihateit)吗?试试[NuSOAP](http://sourceforge.net/projects/nusoap/) - 我换了头发,现在头发渐渐长大了。 – DaveRandom

+0

证书有效,也没有自签名。适用于在同一台服务器上运行的普通网站上的HTTPS。是的,使用(邪恶)本地SOAP扩展。可以尝试NuSOAP,但怀疑这是问题,因为相同的测试代码在开发服务器上工作。必须是一些配置问题。 – user470714

回答

2

我想指出,这可能与你的nginx的配置和SSL有几个好点的,开始寻找:

  1. 核实nginx的你的监听端口是443
  2. 验证您的代理位置是127.0.0.1:80(端口80,因为它是HTTP,除非您自定义它)
  3. 如果您使用CentOS,我发现iptables成为许多问题的罪魁祸首。有时我忘了在防火墙中打开端口443。要配置,请转至/etc/sysconfig/iptables/并添加防火墙规则。

和最后但并非最不重要....

我发现SOAP通过SSL :) http://soapoverhttps.blogspot.ca/

+0

您的观点1是实际问题的缩写版本,对于其他查询思维,我从我们的兼职服务器管理员那里得到了帮助,他发现问题有两个方面:a)实际上有两个代理服务器 - 主要和故障转移。故障切换的keepalived配置是错误的,所以它不应该处理请求。 b)因为它是故障转移,它正在侦听默认端口并将SSL通信绑定到非SSL端口。无论如何,接受我自己的答案没有意义,所以我正在标记你接受的答案。 – user470714