За последние 24 часа нас посетили 22395 программистов и 1061 робот. Сейчас ищут 667 программистов ...

Помогите, может кто шарит в этом

Тема в разделе "Беседы", создана пользователем VaneS, 20 сен 2019.

  1. VaneS

    VaneS Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Здравствуйте!
    Есть веб приложение которое крутиться на IIS и работает только по https. Это приложение предоставляет некий API интерфейс. Сертификат для создания защищенного соединения сервер использует гостовский, т.е. сделанный с помощью крипто про.
    Есть веб приложение которое пишу я, пишется оно на PHP 5.6. И это приложение должно подключаться к той API через https. Мое приложение крутиться на веб сервере apache2 и все это управляется операционной системой Ubuntu.
    Решил в своем приложении протестировать это соединение простым способом, написал в коде:
    PHP:
    1. echo file_get_contents('https://ra.local');
    На что он мне выдает ошибку типа:
    Код (Text):
    1. Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:0609E09C:digital envelope routines:pkey_set_type:unsupported algorithm error:0B09406F:x509 certificate routines:x509_pubkey_decode:unsupported algorithm error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed in /var/www/html/index.php on line 7
    2.  
    3. Warning: file_get_contents(): Failed to enable crypto in /var/www/html/index.php on line 7
    4.  
    5. Warning: file_get_contents(https://ra.local): failed to open stream: operation failed in /var/www/html/index.php on line 7
    6. bool(false)
    Что делать, я уже голову сломал, может тут мне кто то подскажет куда копать?
     
  2. kazadai90

    kazadai90 Активный пользователь

    С нами с:
    6 фев 2013
    Сообщения:
    103
    Симпатии:
    19
  3. VaneS

    VaneS Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    У меня HTTPS работает, т.е. если я напишу вот так:
    PHP:
    1. echo file_get_contents('https://yandex.ru');
    То все будет работать. У меня проблема в том что сервер по адресу https://ra.local присылает мне гостовский сертификат, а PHP его видимо не понимает.
     
  4. kazadai90

    kazadai90 Активный пользователь

    С нами с:
    6 фев 2013
    Сообщения:
    103
    Симпатии:
    19
  5. VaneS

    VaneS Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Сделал так:
    PHP:
    1. $curl = curl_init();
    2.  
    3.   CURLOPT_URL => "https://ra.local",
    4.   CURLOPT_RETURNTRANSFER => true,
    5.   CURLOPT_ENCODING => "",
    6.   CURLOPT_MAXREDIRS => 10,
    7.   CURLOPT_TIMEOUT => 30,
    8.   CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    9.   CURLOPT_CUSTOMREQUEST => "GET",
    10. ));
    11.  
    12. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    13. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    14.  
    15. $response = curl_exec($curl);
    16. $err = curl_error($curl);
    17.  
    18. curl_close($curl);
    19.  
    20. var_dump($err);
    Выдает следующее:
    Код (Text):
    1. string(74) "error:1421C0F8:SSL routines:set_client_ciphersuite:unknown cipher returned"
     
  6. kazadai90

    kazadai90 Активный пользователь

    С нами с:
    6 фев 2013
    Сообщения:
    103
    Симпатии:
    19
  7. VaneS

    VaneS Активный пользователь

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Настроил openssl и гост 2012.
    Если в самой openssl прописывать, то все работает, но если пытаюсь получить доступ через PHP, то не работает. Уже голову сломал
     
  8. kazadai90

    kazadai90 Активный пользователь

    С нами с:
    6 фев 2013
    Сообщения:
    103
    Симпатии:
    19
    А курл пересобрали как в примере по ссылке?
     
  9. FoxCloud

    FoxCloud Активный пользователь

    С нами с:
    20 июн 2017
    Сообщения:
    172
    Симпатии:
    2
    Необходимо сделать подключение из приложения следующим образом:

    <?php
    $arrContextOptions=array(
    "ssl"=>array(
    "verify_peer"=>false,
    "verify_peer_name"=>false,
    ),
    );

    $response = file_get_contents('https://ra.local', false, stream_context_create($arrContextOptions));

    echo $response; ?>
     
    #9 FoxCloud, 23 сен 2019
    Последнее редактирование: 23 сен 2019