證書我試圖建立與下面的代碼SOAP客戶端:PHP SOAP客戶端通過SSL
<?php
$wsdl = 'https://domain.com/?wsdl';
$endpoint = 'https://domain.com';
$certificate = dirname(__FILE__) . '/CertWithKey.pem';
$password = 'pwd';
$options = array(
'location' => $endpoint,
'keep_alive' => true,
'trace' => true,
'local_cert' => $certificate,
'passphrase' => $password,
'cache_wsdl' => WSDL_CACHE_NONE
);
try {
$soapClient = new SoapClient($wsdl, $options);
} catch(Exception $e) {
var_dump($e);
}
我被賦予了的.p12密鑰文件具有.crt的認證文件。使用openssl我已將.p12文件轉換爲.pem文件,然後將其與.crt文件合併。 CertWithKey.pem對我來說很好看,兩個證書塊在文件中。
無論我嘗試做什麼,我都會收到一條異常消息SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://domain.com/?wsdl' : failed to load external entity "https://domain.com/?wsdl"
。
與遠程方打電話後,他們確認請求已進入,但他們正在記錄此錯誤:ssl handshake interrupted by system [hint: stop button pressed in browser?!]
。
由於到目前爲止我沒有在網上找到任何有用的信息,我想請你們對此問題有所瞭解。
任何建議可以嘗試什麼?我正在運行PHP 5.3.8,並且服務器的IP地址在遠程方的防火牆中列出了白名單。
我也試圖發送SOAP請求到服務器。 我正面臨類似的問題,我無法通過我的PHP應用程序與服務器進行通信。但通過SOAP GUI工作。 我有一個.p12文件,我試圖通過轉換爲.pem文件來使用。 當我創建SOAP客戶端對象,我得到的錯誤: SOAP的錯誤:解析WSDL:// WSDL::無法從https加載未能加載外部實體的https:// WSDL 燦你請告訴我這裏出了什麼問題? –
2015-09-28 07:02:30
如果您已按照我的回答,並且密鑰和crt文件成功合併,則遠程主機可能啓用防火牆並阻止您的IP地址。否則我不能告訴你,也許你應該提出一個問題。 – Ben 2015-09-28 10:56:03
我有同樣的問題。我遵循@Ben提供的確切步驟。 p12必須使用提供的鏈接轉換爲.pem,但我仍然收到錯誤: curl:(58)無法加載客戶端證書-8018 奇怪的是,我想我們的密碼是我提供的是3數字'123',而不得不提供一些有效的6個字母字符的密碼。 所以我相信,應該有一個很好的長度密碼短語(不知道最小長度)。接下來這是缺少的是應該在SoapClient對象初始化中提供的'local_cert','密碼短語'選項。 – 2015-11-03 09:23:35