2012-10-17 53 views
9

我無法通過php使用cURL連接到TransUnion的測試API。如果有人已經這樣做,請告訴我。我已經準備好了我的XML文件發送給他們,我只是不知道是什麼問題,因爲我收到了包含證書和密鑰的.p12文件,但它仍然不讓我連接。我試過如下:如何使用pkcs12(p12)證書發送給Transunion API?

$ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HEADER, 1); 
    curl_setopt($ch, CURLOPT_VERBOSE, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($ch, CURLOPT_FAILONERROR, 1); 
    curl_setopt($ch, CURLOPT_SSLCERT, getcwd().'/certs/cert.pem'); 
    curl_setopt($ch, CURLOPT_SSLCERTPASSWD, 'test_pass'); 
    curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM'); 
    curl_setopt($ch, CURLOPT_SSLKEY, getcwd().'/certs/key.pem'); 
    curl_setopt($ch, CURLOPT_SSLKEYPASSWD, 'test_pass'); 

然後我試着用我的Mac上通過終端連接:

curl -cert /Users/temp_user/cert.pem -key /Users/temp_user/key.pem https://netaccess-test.transunion.com 

可有人請讓我知道我做錯了。謝謝。

+0

您會收到哪個錯誤?使用curl,嘗試詳細切換(命令行中的-v和PHP中的相關選項curl_setopt)以更多地瞭解幕後發生的事情。 – hakre

+0

我忘了提及我在命令行上使用OpenSSL從.p12文件創建證書(cert.pem)和密鑰(key.pem)文件。但是的,我收到了以下時我添加--verbose到命令行: 數字證書無效。請確保您擁有正確的數字證書或下載新的數字證書,然後重新提交事務。如果情況持續存在,請通知TransUnion服務檯800-813-5604。 *關閉連接#0 * SSLv3,TLS警報,客戶端hello(1): – user1754111

+0

檢查您是否確實將其正確轉換。同樣出於測試的原因,我認爲你可以從這些中移除密碼。在您解決問題時可以提供幫助。 – hakre

回答

1

確保你正確地從P12文件,像這樣提取您的證書:

提取CA證書:

openssl pkcs12 -in NAME_OF_P12_FILE.p12 -cacerts -nokeys -out NAME_OF_PEM_FILE_TO_CREATE.pem 

要提取個人證書:

openssl pkcs12 -in NAME_OF_P12_FILE.p12 -clcerts -nokeys -out NAME_OF_PEM_FILE_TO_CREATE.pem 

要提取私鑰:

用密碼:openssl pkcs12 -in NAME_OF_P12_FILE.p12 -clcerts -nocerts -out NAME_OF_PEM_FILE_TO_CREATE.pem

沒有密碼:openssl pkcs12 -in NAME_OF_P12_FILE.p12 -clcerts -nocerts -nodes -out NAME_OF_PEM_FILE_TO_CREATE.pem