Sto testando un'API che utilizza la funzione curl_exec
php e un certificato CA ma qualcosa non funziona e sono un po 'persi.Certificato peer SSL o chiave remota SSH non OK OK
Ho configurato SSL sul mio apache VirtualHost e sembra ok (aprendo https:://[myVHost]
... funziona).
Tuttavia il ricciolo chiamata API ridammi questo messaggio:
SSL peer certificate or SSH remote key was not OK
Io non sono molto esperto con SSL quindi ho alcune idee sulla causa di questo.
UPDATE:
Questo è il codice che sto usando nella mia richiesta cURL, ho commentato 2 linee e cambia il loro valore (guarda alla linea 'TODO') e in questo modo si sta lavorando, tuttavia questo è solo un lavoro arround ...
$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);
Abbiamo bisogno del codice completo e completo che stai utilizzando per effettuare la richiesta, incluso * tutto * delle opzioni di arricciatura impostate. Inoltre, questo è un certificato autofirmato? – Charles
Informazioni aggiunte :) sulla domanda 'Certificato autofirmato' Non so: il certificato è fornito con l'API ... – WonderLand
Hai identificato correttamente la causa principale:' CURLOPT_SSL_VERIFYHOST' è 2. Se impostato su 2 , arricciatura verificherà che il certificato sia valido e che sia stato emesso da una CA di cui si fida. Se il certificato remoto è autofirmato o non emesso da una CA che si fida, si lamenterà e darà un errore come quello che ti è stato dato. Se hai ricevuto il certificato da una terza parte, devi convincere la curl a fidarsi della CA che l'ha firmata. Dici che ti è stato dato un certificato CA, giusto? Che cosa hai fatto con esso? – Charles