关于php:无法通过HTTPS访问SOAP Web服务

Can't Access SOAP Web Service Over HTTPS

我要执行的操作是使用SSL命中一个Web服务(由我构建)。它似乎似乎没有用。一些相关信息:

  • 使用HTTP一切正常。该问题仅在使用HTTPS时发生。
  • 输出的实际错误消息如下:

SOAP错误:解析WSDL:无法从...加载:无法加载外部实体...

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

  • 如果我尝试通过浏览器通过HTTPS访问WSDL,则效果很好。如果尝试访问SOAP端点URL之一,则会收到错误消息。

  • 我编写了一个最小化的PHP脚本,尝试对服务进行实际调用。尝试检索WSDL本身时,它将收到错误消息。
  • Web服务器是在Debian上运行的Apache
  • 这似乎不是代码问题。我在开发服务器上运行了可比较的代码,即使在使用HTTPS的情况下,也可以正常运行。
  • 生产系统在代理系统上运行,而nginx在前面。看来这很可能与问题有关,但不知道从哪里开始解决该问题。


我想指出的是,这可能与您的nginx配置有关,对于SSL,有几个不错的地方可以开始寻找:

  • 验证您在nginx上的监听端口是443
  • 验证您的代理位置是127.0.0.1:80(端口80,因为它是HTTP,除非您对其进行了自定义)
  • 如果您使用的是CentOS,我发现iptables是许多问题的元凶。有时我只是忘记在防火墙中打开端口443。要进行配置,请转到/etc/sysconfig/iptables/并添加防火墙规则。
  • 最后但并非最不重要....

    我发现了这个关于SSL的SOAP指南:) http://soapoverhttps.blogspot.ca/