Ошибка с fsockopen() и SSL, «Не удалось включить криптографию»

Я пытаюсь подключиться к испытательному стенду Nominet EPP, но получаю сообщение «Не удалось включить криптографию», которое кажется редкой ошибкой без задокументированного решения или причины.

С линией:

$socket = fsockopen('ssl://testbed-epp.nominet.org.uk', 700, $errno, $errst, 10);

Точная ошибка, которую я получаю:

Warning: fsockopen() [function.fsockopen]: Failed to enable crypto in /path/classes/nominet_epp.class.php on line 53

Warning: fsockopen() [function.fsockopen]: unable to connect to ssl://testbed-epp.nominet.org.uk:700 (Unknown error) in /path/classes/nominet_epp.class.php on line 53

Насколько я могу судить, OpenSSL установлен с PHP нормально, как это в нашем phpinfo():

OpenSSL support     enabled
OpenSSL Version     OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008

В документах Nominet кратко упоминается: «Для проверки подлинности защищенного сервера вам потребуется корневой сертификат Verisign Class 3 Public Primary Certification Authority, доступный бесплатно на сайте www.verisign.com (сертификат также распространяется с большинством веб-сайтов). браузеры). – Возможно, проблема в этом?

Обновление В соответствии с запросом я изменил значения ошибок, а также сам $socket, var_dump, все они равны false/0. В документах fsockopen PHP говорится: "Если значение, возвращаемое в errno, равно 0, а функция возвращает FALSE, это указывает на то, что ошибка произошла до вызова connect(). Скорее всего, это связано с проблемой инициализации сокета."

Любая помощь будет принята с благодарностью.


person Dunhamzzz    schedule 31.03.2011    source источник
comment
Не могли бы вы напечатать $errno и $errst?   -  person Stefan Gehrig    schedule 31.03.2011
comment
Я только что var_dumped $socket, $errst и $errno, и они ложны, пусты и 0 соответственно. странный.   -  person Dunhamzzz    schedule 31.03.2011
comment
Можете ли вы попробовать openssl s_client -ssl3 -crlf -connect testbed-epp.nominet.org.uk:700 на консоли?   -  person Stefan Gehrig    schedule 31.03.2011
comment
Возвращает: 1409E0E5: подпрограммы SSL: SSL3_WRITE_BYTES: ошибка рукопожатия SSL: s3_pkt.c: 530:   -  person Dunhamzzz    schedule 31.03.2011
comment
Кажется, это проблема с вашим OpenSSL или удаленной системой... Можете ли вы исключить этот вариант?   -  person Stefan Gehrig    schedule 31.03.2011
comment
Я не уверен, что вы имеете в виду, есть ли другой сервис, в который я мог бы открыть fsock, чтобы исключить проблему с моим сервером? Может быть, это сертификат, как указано выше? Я ничего не делал с корневыми сертификатами, но, предположительно, они мне нужны.   -  person Dunhamzzz    schedule 31.03.2011
comment
Возвращаемая ошибка openssl не указывает на проблему с сертификатом. Соединения останавливаются еще до обмена сертификатами. Возможно, вам следует попробовать подключиться к обычному веб-сайту SSL с ssl://maps.google.com на порту 443.   -  person Stefan Gehrig    schedule 31.03.2011
comment
Это сработало нормально, я могу только предположить, что это Nominet. Я свяжусь с ними, большое спасибо за вашу помощь до этого момента.   -  person Dunhamzzz    schedule 31.03.2011


Ответы (1)


У меня была точно такая же проблема, и она заключалась в том, что брандмауэр Nominet не обновлялся с правильным IP-адресом. Когда вы настраиваете это в панели управления Nominet, вам нужно подождать час, пока их брандмауэры полностью обновятся — как только это будет сделано, соединение будет работать нормально.

person Spencer Collins    schedule 03.04.2011