2015-11-03 2 views
1

Я использую Zend Framework 1. *, и когда выполняется «stream_socket_enable_crypto», всегда возвращается false. Zend бросает за исключением этого исключения:Zend Не удается подключиться к HTTPS-серверу через прокси

"Unable to connect to HTTPS server through proxy could not negotiate secure connection." 

Я пробовал все следующие типы криптографических в предыдущем методе «stream_socket_enable_crypto» с тем же результатом ...

STREAM_CRYPTO_METHOD_SSLv2_CLIENT 
STREAM_CRYPTO_METHOD_SSLv3_CLIENT 
STREAM_CRYPTO_METHOD_SSLv23_CLIENT 
STREAM_CRYPTO_METHOD_TLS_CLIENT 
STREAM_CRYPTO_METHOD_SSLv2_SERVER 
STREAM_CRYPTO_METHOD_SSLv3_SERVER 
STREAM_CRYPTO_METHOD_SSLv23_SERVER 
STREAM_CRYPTO_METHOD_TLS_SERVER 

Глядя глубоко в «connectHandshake «Метод Zend, который я видел, я могу подключиться к прокси, но не к серверу через прокси. Я застрял надолго с этой проблемой, какой-нибудь ключ?

PHP версии 5.6. *

ответ

1

Наконец понял, была проблема PHP версии. В PHP 5.6. * "Verify_peer_name" по умолчанию изменено на TRUE. См. Журнал изменений here.

Установка этого свойства в false устраняет проблему подключения.

$adapter->setStreamContext(array(
      'socket' => array(
       // Bind local socket side to a specific interface 
       'bindto'   => self::PROXY_HOST . ':' . self::PROXY_PORT 
      ), 
      'ssl' => array(
       'crypto_method'  => STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT, 
       // Verify server side certificate, 
       'verify_peer'  => false, 
       'verify_peer_name' => false, 
       'allow_self_signed' => false, 
      ) 
     )     
    ); 

Надеется, что это помогает кто-то еще

Смежные вопросы