curl_exec
PHP関数とCA証明書を使用するAPIをテストしていますが、何かがうまくいかず、少し失われています。SSLピア証明書またはSSHリモートキーが正しくありません
私はApacheのVirtualHostでSSLを設定していて、okと思われます(開けばhttps:://[myVHost]
...)。私は非常に私はそれの原因についていくつかのアイデアを持っているSSLを経験していないよ
SSL peer certificate or SSH remote key was not OK
:
しかしAPIカール呼び出しは、このメッセージを私に戻って与えます。UPDATE:
は、これは私が私のcURLのリクエストで使用しているコードですが、私は、2行をコメントし、その値を変更します(「TODO」行を見て)、このようにそれが働いているしていますおそらくCURLOPT_SSL_VERIFYPEERオプションが設定されている場合に合格しない自己署名SSL certifiacateを、使用している
$opts[CURLOPT_URL] = $url;
$opts[CURLOPT_RETURNTRANSFER] = true;
$opts[CURLOPT_CONNECTTIMEOUT] = 50;
$opts[CURLOPT_TIMEOUT] = 100;
$headers = array(
'Accept: application/json',
"User-Agent: APIXXX-PHP-Client");
$opts[CURLOPT_HTTPHEADER] = $headers;
$opts[CURLOPT_USERPWD] = $env->getApiKey() . ':';
if (certificatePresent()) {
// $opts[CURLOPT_SSL_VERIFYPEER] = true;
// $opts[CURLOPT_SSL_VERIFYHOST] = 2;
// TODO: SET IT BACK
$opts[CURLOPT_SSL_VERIFYPEER] = 0;
$opts[CURLOPT_SSL_VERIFYHOST] = 0;
$opts[CURLOPT_CAINFO] = $path
}
curl_setopt_array($curl, $opts);
$response = curl_exec($curl);
設定しているカールオプションの*すべて*を含め、リクエストに使用する完全なコードが必要です。また、これは自己署名証明書ですか? – Charles
情報が追加されました: '自己署名証明書'質問について私は知らない:証明書にはAPIが付属しています... – WonderLand
根本原因を確認できました: 'CURLOPT_SSL_VERIFYHOST' is being 2. 2に設定するとcurlは、証明書が有効であること、およびそれが信頼するCAによって発行されたことを確認します。リモート証明書が自己署名されている場合、または信頼できるCAによって発行されていない場合は、与えられたようなエラーが表示されます。証明書を第三者から入手した場合、証明書に署名したCAを信頼するようにカールする必要があります。あなたはCA証明書を与えられたと言うのですか?あなたはそれで何をしましたか? – Charles