fsockopen не удается подключиться к URL-адресу SSL (HTTPS). при использовании галереи 3 для загрузки изображений

Я использую Галерею 3 для загрузки изображений. Когда я использую https://domain, загрузка работает нормально. Но поскольку я использую https://domain, Gallery3 не может установить соединение.

Errors : **fsockopen(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in fileName** 

 **fsockopen(): Failed to enable crypto in finleName**

**fsockopen(): unable to connect to ssl://domain:443 (Unknown error) in /**

Ниже приведены наблюдения:

  1. URL-адрес для подключения становится ssl: // доменом с портом 443.
  2. fsockopen не может установить соединение и выдает ошибку.

Что не так? У меня есть действующий сертификат https на моем сервере, а также установлен openssl.

Что-нибудь еще требуется?


person Vivek Tankaria    schedule 12.06.2017    source источник


Ответы (1)


PHP 5.6+ обновил шифры по умолчанию на основе Рекомендации по шифрованию Mozilla. Более подробная информация о том, какие шифры используются, содержится в RFC для улучшения настроек tls по умолчанию. . В целом это изменение удалило поддержку Anonymous Diffie-Hellman и RC4, вероятно, ваш сервер все еще использует RC4.

Есть два варианта:

  1. Обновите шифры, которые использует ваш сервер, в соответствии с рекомендациями Mozilla ciper.
  2. Обновите код gallery3, чтобы использовать RC4, так как он не обновлялся с 2013 года, вы, вероятно, можете сделать этот вариант без особого беспокойства.

Для варианта 2 похоже, что вызов выполняется в gallery3 / modules / gallery / helpers / MY_remote.php в строке 73/74:

$handle = fsockopen(
  $url_components['fsockhost'], $url_components['port'], $errno, $errstr, 5);

Вы можете изменить это, чтобы использовать stream_socket_client, совместимый с fsockopen :

$context = stream_context_create(['ssl' => [
    'ciphers' => 'RC4-MD5'
]]);
$timeout = ini_get('default_socket_timeout');

$handle = stream_socket_client('ssl://' . $url_components['fsockhost'] . ':' . $url_components['port'], $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $context);
person sjdaws    schedule 12.06.2017