2011-03-07 164 views
3

我需要從PHP訪問RESTful Web服務(目前僅支持GET)。該服務只能通過有效的客戶端證書通過HTTPS訪問。如何使用PHP HTTP客戶端執行基於證書的身份驗證

我發現了很多PHP的基本身份驗證示例,但沒有一個用於客戶端基於證書的HTTP身份驗證。有沒有可以將證書發送到服務器的PHP HTTP客戶端?

現在我正在使用一個外部應用程序(wget),但是這是相當緩慢和黑客。

回答

6

基於證書的身份驗證不是HTTP的一部分,但是SSL/TLS的一部分。

您可以使用捲曲做這樣的認證:

$ch = curl_init('https://example.com/'); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, '1'); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, '1'); 
curl_setopt($ch, CURLOPT_CAINFO, '/path/to/cert/ca.crt'); 
curl_setopt($ch, CURLOPT_SSLCERT, '/path/to/cert/client-cert.pem'); 
$response = curl_exec(); 
curl_close($ch); 

有關選項的詳細信息,請參閱the manual page of curl_setopt

相關問題