我想做的是使用 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/
并添加防火墙规则。
最后但并非最不重要的......
我发现了这个关于 SOAP over SSL 的精彩指南:) http://soapoverhttps.blogspot.ca/
关于php - 无法通过 HTTPS 访问 SOAP Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10506708/