php - 无法通过 HTTPS 访问 SOAP Web 服务

标签 php apache soap ssl nginx

我想做的是使用 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,有几个不错的地方可以开始寻找:

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

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

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

关于php - 无法通过 HTTPS 访问 SOAP Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10506708/

相关文章:

ios - iOS 中的 SOAP 与 touchXML 一起使用

asp.net - BlackBerry Web 服务调用参数编码

php - 对 SSL 的 Soap 客户端调用

php - 将 php 对象存储在 html 表单元素上并通过 GET 方法传递 php 对象?

PHP 在不使用解包的情况下将主体读入字节数组

php - 从javascript读取JSON到PHP

linux - 同一服务器上的两个不同项目(不同的index.php)

php - 验证字段仅包含以逗号分隔的数字

linux - 将所有非 HTTPS 请求重定向到 HTTPS

python - 将 django pyodbc 应用程序转换到 apache 时出现 odbc 连接错误