Страница 1 из 1

Настройка ssl php

Добавлено: 09 июн 2013, 21:50
antoxa
Здравствуйте, возникла проблема при работе с ssl.
Unable to Connect to ssl://www.google.com:443. Error #24: Unable to find the socket transport “ssl” – did you forget to enable it when you configured PHP?

Что делал для решения:
1) Раскоментил строку в php.ini extension=php_openssl.dl
2) Скачал необходимые библиотеки libeay32.dll и ssleay32.dll, забросил их в директорию C:\WINDOWS\system32\inetsrv
3) Добавил Пути к php и php/ext в path
4) Ребутил сервер и винду
5) Скачал и установил openSSl в виде инсталлера

phpinfo();
Registered Stream Socket Transports tcp, udp, ssl, sslv3, sslv2, tls

Все бестолку, может кто сталкивался с этим ?

Добавлено: 09 июн 2013, 21:54
Asmodey
...не есть мочь использовать транспортный сокет SSL...
Вестимо надо HTTPS?

Добавлено: 09 июн 2013, 21:57
antoxa
Что выдает composer при обновлении.

[Composer\Downloader\TransportException]
The "http://packages.zendframework.com/packages.json" file could not be dow
nloaded: failed to open stream: Unable to find the socket transport "ssl" -
did you forget to enable it when you configured PHP?

И как это поправить ?

Добавлено: 09 июн 2013, 22:17
Максим
К чем такой топик в теме про Open Server? Это в модули надо было постить.

Вы всё делали зря, необходимые для SSL файлы уже есть в Open Server и лежат они не в папке с PHP но автоматически подключаются при запуске сервера.

Что касается вашей проблемы. Может нужно отключить проверку сертификатов.

Для fopen, файл гет контентс и прочих:
$context = stream_context_create(
              array(
                'ssl' => array(
                           'verify_peer' => false,  //default
                           'allow_self_signed' => true, //needs verify peer, tried that
                           'ciphers'=>"SHA1", // quite random.
                   ),
                'https' => array(
                           'curl_verify_ssl_peer'  => false,
                           'curl_verify_ssl_host'  => false
                          )
      )
            );
И если через Curl:
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
Плюс в PHP коде нужно указать путь до сертификат сервера (в папке userdata/config) или до своего сертификата, если сертификат используется в коде.

Не берусь говорить что поможет, но попробуйте. Сейчас вспомню какие еще могут быть проблемы.

Добавлено спустя 9 минут 9 секунд:
Вот вспомнил. Если вы запускаете код в PHP через консоль, то нужно запускать PHP по правилам, т.е. с указанием пути до php.ini и всех опций. Если не указать путь, то php.ini не подхватится и библиотека OpenSSL не будет подключена. Эти слова справедливы для старых версий Open Server. В двух, кажется, последних версиях Open Server файл php.ini уже нормально подхватывается через консоль (встроенную, при запуске из меню "Дополнительно" после старта сервера).

Добавлено спустя 6 минут 26 секунд:
Вот еще вспомнил, в старых версиях, была проблема с openssl в php, он тупо не работал с сервером Apache. На nginx было все хорошо, поэтому если версия старая - обновите.

Плюс убедитесь что адрес сервера и порт правильно пишете, не вместе, а раздельно:
if ( $fp = fsockopen("ssl://www.google.com", 443, $errno, $errstr, 30) ) {

Добавлено: 09 июн 2013, 22:20
antoxa
Спасибо большое, проблема разрешилась. Дело в том что я раскоментил расширение в php.ini в настройках сервера, но существовал еще один файл в c:\windows там то, строчка была закоменчена.

Как говорится "дело было не в бобине..." ))

Добавлено: 09 июн 2013, 22:23
Максим
Если у вас не установлено других версий PHP, то удалите этот php.ini из папки с Windows и вообще всё остальное что вы понаустанавливали, включая собственные настройки PATH. Open Server портативен, ему стороннего ничего в данном случае абсолютно не нужно.