2012-05-01 9 views
2

HTTPS(SSL)にアクセスするためのcURLを使用して保護されたサイト: CURLE_SSL_CERTPROBLEM(58) ローカルクライアント証明書には問題。PHP - 次のコードは、cURLのドキュメントからの終了コード58</p> <p>を返し

// create a new CURL resource 
$ch = curl_init(); 

// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL, $URL); 
curl_setopt($ch, CURLOPT_HEADER, false); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_VERBOSE, true); 

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 

curl_setopt($ch, CURLOPT_SSLCERT, getcwd() . $CERT); 
curl_setopt($ch, CURLOPT_SSLCERTPASSWD,"XXXXX"); 

curl_setopt($ch, CURLOPT_SSLVERSION, 3); 

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content Type: text/xml', 
    'User-Agent: XXXXX', 
    'User-Name: XXXXX' 
)); 

$RESPONSE = curl_exec($ch); 

var_dump($RESPONSE); 

// close CURL resource, and free up system resources 
curl_close($ch); 

紛失しているものがありますか?

答えて

4

getcwd() . $CERTのファイルが存在し、有効なPEM証明書であることを確認してください。それはOKと思われる場合は、STDERRに多くのSSL証明書の詳細出力を取得するには、次のオプションを設定します。

curl_setopt($ch, CURLOPT_CERTINFO, true); 

注意をCURLOPT_VERBOSEは、あなたが既に持っている、trueに設定されている場合は、この設定にのみ効果を有すること。

+0

Kaivosukeltajaありがとう!実際には、サーバー上の証明書パスには愚かな問題でした。 – Ren

+0

問題ありません、Ren!いずれかの回答が有用であることが判明した場合は、それらをupvoteおよび/またはマークすることを忘れないでください。 :) – Kaivosukeltaja

0

ローカルクライアント証明書に問題

うーん少し漠然としました。リモートシステムがそれを気に入らないのではなく、証明書のようにカールしないことを意味するようです。 PEM形式ですか?公開鍵と秘密鍵は証明書にありますか? webserver uidによって読み取り可能ですか?

+0

ええ、私はそれがより具体的であることを望みます。これはPEM形式です。また、CLI(curl -v -k --cert xxx.pem --pass xxx https:// xxx)を使用してアクセスする際に問題がないので、証明書に問題はないはずです。それは私がPHPでどのように使用しているかに問題があるようです。 – Ren

関連する問題