簡體   English   中英

PHP CURL錯誤:無法使用客戶端證書(找不到密鑰或密碼短語錯誤?)

[英]PHP CURL error: unable to use client certificate (no key found or wrong pass phrase?)

我正在這樣做:

$ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, '1'); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, '2'); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, '1'); 
curl_setopt($ch, CURLOPT_CAINFO,  getcwd().'/public.pem'); 
curl_setopt($ch, CURLOPT_SSLCERT, getcwd().'/private.key'); 
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, '1234');
curl_setopt($ch, CURLOPT_SSLKEYPASSWD, '1234'); 
curl_setopt($ch, CURLOPT_URL, "http://api-xxxxxx.duosecurity.com/auth/v2/preauth");
$dataa = curl_exec($ch);

我收到此錯誤: unable to use client certificate (no key found or wrong pass phrase?)

我想念什么? 如果代碼正確,那么您能指導我如何使用opensslssh-keygen 生成一對證書嗎?

這是您通過HTTPS連接到Yahoo的方式

$ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, '1'); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, '2'); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, '1'); 
curl_setopt($ch, CURLOPT_URL, "https://m.yahoo.com/");
$dataa = curl_exec($ch);

您不使用客戶端證書與HTTPS主機通信。

瀏覽器/客戶端不使用客戶端證書的原因差異很大,無法在此處列出。

客戶端證書似乎是一種身份驗證或登錄到網站的方法,它們不是加密與服務器通信的一部分。

https://en.wikipedia.org/wiki/Client_certificate

https://pilif.github.io/2008/05/why-is-nobody-using-ssl-client-certificates/

http://blogs.msdn.com/b/kaushal/archive/2012/02/18/client-certificates-vs-server-certificates.aspx

更新

在得知原始問題與duosecurity的API有關,而不是與常規的yahoo http連接有關之后,我研究了duo的API文檔以及JS和PHP客戶端庫。 我找不到對客戶端SSL證書的任何引用。

為了回過頭來解決“找不到密鑰或密碼短語錯誤”的原始錯誤,我們應該查看CURLOPT_ *設置。

在原始問題中,使用curlopt設置錯誤地標識了證書和密鑰。

$ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, '1'); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, '2'); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, '1'); 

curl_setopt($ch, CURLOPT_SSLCERT,  getcwd().'/public.pem'); 
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, '1234');

curl_setopt($ch, CURLOPT_SSLKEY, getcwd().'/private.key'); 
curl_setopt($ch, CURLOPT_SSLKEYPASSWD, '1234'); 
curl_setopt($ch, CURLOPT_URL, "http://api-xxxxxx.duosecurity.com/auth/v2/preauth");
$dataa = curl_exec($ch);

使用SSLCERT(PASSWORD)和SSLKEY(PASSWORD)啟用客戶端證書。 您的客戶端證書不太可能需要CA-CURLOPT_CAINFO僅用於幫助標識對等方,而不是您自己。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM