2015-06-04 4 views
0

У меня есть сервер FreeBSD FreeBSD hotspot.brightlan.net 6.2-RELEASE-p6 FreeBSD 6.2-RELEASE-p6 # 0: сб июл 21 13:42:25 EDT 2007Ошибка: 14090086: SSL-процедуры: SSL3_GET_SERVER_CERTIFICATE: проверка сертификата завершена

На этом сервере у меня есть приложение в php с помощью curl, которое подключается к Authorize.net через их api. Недавно они обновили свои SSL-сертификаты для поддержки sha256, и поэтому сертификат SSL также изменился. После этого изменения приложение не подключается. Если я делаю curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, FALSE) , он успешно соединяется, но я хочу пойти с полной проверкой сервера во время подтверждения SSL. Я заметил, что тот же подключается с другого Linux-сервера ubuntu после обновления файла сертификата ca, указав параметр CURLOPT_CAINFO.

Но на этом FreeBSD он не подключается. Я также отметил, что сертификат SSL выдается под подстановочным знаком i.e. * .authorize.net. Из-за этого на сервере ubuntu также пришлось отключить CURLOPT_SSL_VERIFYHOST. Но на этом сервере FreeBSD он просто не работает с этой опцией. Сервер немного устарел с версией php PHP 4.4.7 (cgi-fcgi) (построено: 4 мая 2007 13:35:10)

Любая помощь приветствуется.

ответ

0

Я наконец-то нашел, что версия версии OpenSSL позади проблемы. SHA256 не поддерживался до 0.9.8o. Поэтому я попробовал обновить openssl до последней версии. Поскольку моя система довольно старая, последние версии не поддерживаются. Итак, я начал успешно скомпилировать 0.9.8o, но он разрушает SSH, как он используется внутри. Поэтому теперь моя задача - обновить openssl до 0.9.8o без нарушения SSH-сервера.

Я начал копаться немного и узнал, как связать разную версию Openssl, как было упомянуто выше «Steffen Ullrich». Я смог скомпилировать и связать с openssl 0.9.8o как статически, так и динамически и найти ниже наблюдения.

Когда мы скомпилируем php с включенным openssl, curl не использует связанный с ним openssl для подключения к сайту. Здесь я скомпилировал как php, так и curl с отдельными версиями openssl (я даже попытался скомпилировать и связать завиток со статическим openssl). Версия openssl, которая была скомпилирована с использованием php, имеет приоритет при подключении к сайту и, следовательно, не может подключиться в моем случае (из-за сертификата SHA256 ssl & php-openssl-0.9.7e). Однако, если я перекомпилирую php с более высокой версией openssl (0.9.8o), тогда он сможет подключиться.

Кроме того, если я скомпилирую php без включения openssl, то curl может подключаться, поскольку он использует связанный openssl 0.9.8o.

Я не знаю, была ли эта ошибка или должна была быть такой в ​​php или, возможно, исправлена ​​в последних доступных версиях php/curl.

Но я думаю, что с точки зрения curl это неправильная вещь, чтобы использовать версию openssl, связанную с php для подключения к сайту. Он должен использовать связанную версию openssl (0.9.8o) для подключения к сайту.Если кто-либо подключается к веб-сайту, следует использовать версию openssl (0.9.7e), связанную с php.

0

Обратите внимание, что у вас работает очень старая система, которая больше не поддерживается и, вероятно, накопила много проблем с безопасностью. Я не уверен, но я думаю, что эта версия FreeBSD поставляется с openssl 0.9.7, который слишком стар, чтобы поддерживать сертификаты, подписанные с SHA-256.

Проверьте версию с openssl version увидеть https://support.globalsign.com/customer/portal/articles/1499561-sha-256-compatibility

+0

Спасибо за ваш ответ. Я знаю его старую систему, и я понял, что мне нужно обновить openssl. Я тоже это сделал, и отлично работает на аналогичной (тестовой) установке. Теперь сложность заключается в том, чтобы связать это только с завитки, чтобы он не нарушал других. например, он прерывает службу ssh, если я ее свяжу. Я не хочу нарушать работу в производственной системе. –

+0

Существуют варианты сборки при компиляции openssl для указания пути установки, чтобы он не конфликтует с установкой системы. И у curl, похоже, есть аналогичные опции, где вы можете указать путь к используемой библиотеке SSL. Если вы их объедините, вы можете построить завиток с помощью специального SSL, который не выводит на локальную установку. Ознакомьтесь с соответствующими дистрибутивами источников для таких файлов, как INSTALL, которые обычно описывают этот процесс более подробно. –

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

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