使用nusoap时如何强制执行TLS 1.2?

时间:2017-10-27 12:28:23

标签: php soap tls1.2 nusoap eway

我正在使用nusoap连接Eway传统Api。突然Eway强制执行TLS 1.2。所以我在我的服务器中设置了开放的ssl 1.0和TLS 1.2。

从那台服务器我连接Eway rapid api,工作正常。由于Legacy和Rapid api都需要TLS 1.2,而且快速工作正常,这意味着我们的服务器设置即可。但是这个传统的api连接无效。

当我使用nusoap连接Eway传统API时,我需要通过代码强制执行TLS 1.2。

代码示例 -

<?php

$client = new nusoap_client("https://www.eway.com.au/gateway/rebill/manageRebill.asmx");
$client->namespaces['man'] = 'http://www.eway.com.au/gateway/rebill/manageRebill';
$headers = "<man:eWAYHeader><man:eWAYCustomerID>****</man:eWAYCustomerID><man:Username>****</man:Username><man:Password>****</man:Password></man:eWAYHeader>";
$client->setHeaders($headers);

$requestbody = array();
$soapactionUrl = 'http://www.eway.com.au/gateway/rebill/manageRebill/';
$requestbody['man:RebillCustomerID'] = $eway_rebill_customer_id;
$requestbody['man:RebillID'] = $eway_rebill_id;
$soapaction = 'QueryRebillEvent';
$client = $this->_creatEwayRebillRequestHeader();

$result = $client->call('man:'.$soapaction, $requestbody, '', $soapactionUrl.$soapaction,true);
$err_msg = $client->getError();
echo $err_msg;
?>

错误按摩我得到的是 -

  

wsdl错误:获取https://www.eway.com.au/gateway/rebill/manageRebill.asmx - HTTP错误:不支持的HTTP响应状态403禁止(soapclient-&gt;响应包含响应内容)

我确信我的凭据,eway支持团队也告诉我强制执行TLS 1.2来解决问题。但我不知道如何在nusoap库中强制执行TLS 1.2。

1 个答案:

答案 0 :(得分:1)

看来你可以告诉NuSOAP使用CURL。因此,稍微修改设置应该可以做到这一点

$client = new nusoap_client("https://www.eway.com.au/gateway/rebill/manageRebill.asmx");
$client->setUseCURL(true);
$client->setCurlOption(CURLOPT_SSLVERSION, '6'); // TLS 1.2

我没有办法对此进行测试,但我的基础是the NuSOAP class found in GitHub。这适用于CURL,所以它应该在这里工作。