Логотип   Простое и понятное управление
  Уникальные возможности по настройке
  Open Server скачали уже 1 020 764 раза!

Форум

Добро пожаловать, Гость!

OpenSSL ssl3_get_server_certificate:certificate verify failed

Обсуждение общих вопросов связанных с программой
Аватара пользователя
v_decadence
Сообщения: 2
C нами: 1 год 4 мес

Непрочитанное сообщение v_decadence » 11 апр 2016, 23:31

Всем привет.

OpenServer 5.2.4 (PHP 7)
Windows 10 x64

При попытке в PHP получить файл с другого сервера через file_get_contents выдаёт такую ошибку:

Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed

Warning: file_get_contents(): Failed to enable crypto in ssl.php on line 4

Warning: file_get_contents failed to open stream: operation failed in ssl.php on line 4


Ошибка из-за изменений в работе OpenSSL с PHP 5.6

В php.ini OpenServer по умолчанию прописаны пути к сертификатам и openssl расширение включено:
openssl.cafile="%sprogdir%/modules/php/%phpdriver%/cacert.pem"

То есть работать должно из коробки вроде как.
Или я что-то не так понял и что-то ещё нужно, чтобы OpenSSL работал?

Отключение проверки не предлагать, потому что это неверный подход.

AdeptO
Сообщения: 28
C нами: 1 год 11 мес

Непрочитанное сообщение AdeptO » 25 май 2016, 14:41

брать файл с помощю курл запроса ибо менять сертификаты самого сервака тоже подход некошерный.
<?php
$test_URL       = 'https://test4.allo.chua/test.php';
$certfile       = 'D:/OpenServer/domains/test\client.crt';
$keyfile        = 'D:/OpenServer/domains/test\client.key';

$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $test_URL );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt( $ch, CURLOPT_SSLCERT, $certfile );
curl_setopt( $ch, CURLOPT_SSLKEY, $keyfile );
curl_setopt( $ch, CURLOPT_SSLKEYPASSWD,"1q2w3e");
curl_setopt( $ch, CURLOPT_POST, 0 );
$ch_result = curl_exec( $ch );
// Check for errors
if ( curl_errno($ch) ) {
   $ch_result = 'cURL ERROR -> ' . curl_errno($ch) . ': ' . curl_error($ch);
} else {
   $returnCode = (int)curl_getinfo($ch, CURLINFO_HTTP_CODE);
   switch($returnCode){
      case 200:
         break;
      default:
         $ch_result = 'HTTP ERROR -> ' . $returnCode;
         break;
   }
}
curl_close( $ch );

echo $ch_result;

?>


Вернуться в «Обсуждение Open Server»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей