【发布时间】:2017-05-01 17:55:30
【问题描述】:
新证书是“Symantec Class 3 EV SSL CA - G3”。客户端有 CentOS。没有对服务器的控制,它是第三方。在火狐和Chrome中加载WDSL https地址时,两个浏览器都显示“安全连接”,没问题。
WSDL 地址是https://palena.sii.cl/DTEWS/CrSeed.jws?WSDL
测试代码:
$success = false;
$attempts = 0;
while (($success === false) && ($attempts < 10)) {
$attempts ++;
echo 'Attempt ' . $attempts . '<br>';
try {
$wsdl = 'https://palena.sii.cl/DTEWS/CrSeed.jws?WSDL';
$entity_loader_status_old = libxml_disable_entity_loader(false);
$SoapClient = new SoapClient($wsdl);
$seed = $SoapClient -> getSeed();
libxml_disable_entity_loader($entity_loader_status_old);
$success = true;
} catch (Exception $Exception) {
echo $Exception -> getMessage() . '<br>';
}
}
if ($success === true) {
echo 'SUCCESS';
} else {
echo 'ERROR';
}
默认连接是安全的,因为 PHP 版本是 5.6.22(高于 5.5.x)。
【问题讨论】:
-
可能某处缺少证书安装。看起来安全连接失败了。
-
@weirdo 确实安全连接失败,如果我禁用安全性它可以工作。我需要一个安全的连接。如果缺少证书安装,为什么当我在浏览器中加载 WSDL 时浏览器显示“安全连接”?
-
通常 SOAP 使用 cURL 来建立连接。默认情况下,cURL 使用严格模式,如果安全连接出现问题,则会失败。如果您有权访问服务器,请尝试此
curl https://palena.sii.cl/DTEWS/CrSeed.jws?WSDL并查看输出 -
如果您尝试
file_get_contents('https://palena.sii.cl/DTEWS/CrSeed.jws?WSDL')会出现什么错误? -
@mikl 我的意思是服务器。如果您无法控制它,我希望您至少可以告诉某人修复它。否则你肯定不会是最后一个遇到问题的人......
标签: php security centos wsdl tls1.2