我從提供程序獲取了兩個證書文件,一個格式爲.cer格式,另一個格式爲.p7b格式。然後我將p7b證書轉換爲p12證書。憑藉此證書,我可以從我的瀏覽器連接到wsdl。 然後我開始使用我在本網站上找到的一些說明將該證書轉換爲.pem格式。使用PHP連接到SSL加密的Web服務時遇到問題
cat test.pem key.pem > cert.pem
我的繼承人爲Web服務類結構:
public function __construct() {
$wsdl_url = 'https://url.to/web_service?wsdl';
$pass = 'passphrase';
$cert = 'cert.pem';
try {
$this->client = new SoapClient($wsdl_url, array('local_cert' => $cert, 'passphrase' => $pass));
} catch(SoapFault $e) {
print_r($e);
}
}
這裏是錯誤:
openssl pkcs12 -clcerts -nokeys -out test.pem -in mycert.p12
openssl pkcs12 -nocerts -out key.pem -in mycert.p12
然後使用以下命令用鑰匙梳理證書
SSL operation failed with code 1. OpenSSL Error messages: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca in /var/www/html/..
試圖使用驗證證書:
openssl verify cert.pem
給了我以下錯誤:
error 20 at 0 depth lookup:unable to get local issuer certificate
我也嘗試使用下面的OpenSSL命令創建的.pem證書:
openssl pkcs12 -in mycert.p12 -out mycert.pem
驗證這給了我好,但PHP給了我以下錯誤:
Unable to set local cert chain file `mycert.pem'; Check that your cafile/capath settings include details of your certificate and its issuer
我假設它應該有可能以某種方式工作,因爲我可以通過我的瀏覽器使用.p12證書來訪問wsdl。但是我無法找到解決方案,我應該如何繼續。 在此先感謝。