2

我的任务是为第三方的 Web 服务开发一个客户端,我无法访问或处理这些服务器机器和源代码。我所拥有的只是 API 规范和地址。该程序在没有身份验证的情况下在 DevelopEnvironment 上运行良好,但在 ProductionEnvironment 它需要基本的 http 身份验证和证书,然后我什至无法收到任何答案。他们说我可以使用自签名证书,所以我在我的服务器(CentOS Apache2+PHP5.3.3)中创建了一个。

该公司向我发送了一段功能性的 DotNetServiceClient 代码,其中包括链接如下的 app.config。

我需要一些示例来说明如何在 PHP SoapClient 或 CURL 中发送此身份验证以及更多证书。

这是 C# 应用程序的 app.config,带有假 IP 和证书: http: //pastebin.com/Jt9k6DB0

这是我当前的客户端代码:

/* PHP WebService Client */

$pemPath   = '/my/certificate/directory/selfsignedcertificate/thatwebservice.pem';
$pemBuffer = file_get_contents($pemPath);

$connectionParameters = array(
    'login'        => 'login',
    'password'     => 'password',
    'trace'        => TRUE,
    'encoding'     => 'UTF-8',
    'exceptions'   => TRUE,
    'cache_wsdl'   => WSDL_CACHE_NONE,
    'soap_version' => SOAP_1_2,
    'local_cert'   => $pemBuffer,
    'passphrase'   => 'd3e343der434wds',
);

$theClient = new SoapClient($serverWSDLURL, $connectionParameters);
$r         = $theClient->GetBasicWorkData();

答案:没有答案!只有超时。

我改编了从这两个 StackOverflow 主题中获取的信息:

  1. 如何将 PHP5 SoapClient::SoapClient() 与客户端证书一起使用?
  2. SoapClient 不发送证书
4

1 回答 1

0

最后,他们的生产服务器无法正常工作,他们更改了几个设置和参数。我使用了简单的 CURL 基本 http 身份验证,并且完成了。

于 2013-08-26T20:36:51.487 回答