Zend-Server 8.5, не удалось обновить OpenSSL для PHP

Провел действительно широкое исследование по теме, но так и не смог заставить свежую версию OpenSSL работать с ZendServer v.8.5.2 на OSX El Capitan.

Предыстория: по умолчанию кажется, что ZendServer и El Capitan идут с openssl-0.9.8zc. Свежая версия PHP 5.6.15 не работает нормально с этой версией OpenSSL и Composer-PHP. Я получал ошибки:

Не удалось найти действительный файл сертификата ЦС. Вы должны установить допустимую опцию 'cafile'. Для защиты SSL/TLS требуется действительный файл сертификата ЦС. ...

[Composer\Downloader\TransportException]
Настроенный файл cafile недействителен или не может быть прочитан.

Я обновил версию OpenSSL с помощью Brew, а затем убедился, что он правильно зарегистрирован в системе:

 brew unlink openssl && brew link --force openssl

Но на самом деле кажется, что у ZendServer есть собственная локальная копия библиотеки openssl в каталоге двоичных файлов:

/usr/местные/зенд/бин/openssl

openssl.cafile был пуст, поэтому я решил указать ему новый путь, как это было рекомендовано в некоторых руководствах: usr/local/etc/openssl/cert.pem

Результат:

кажется, система указывает на правильную версию openssl:

$ openssl version
OpenSSL 1.0.2f  28 Jan 2016
$ openssl version -d
OPENSSLDIR: "/usr/local/etc/openssl"

В то же время which указывает на zend-версию OpenSSL:

$ which -a openssl
/usr/local/zend/bin/openssl
/usr/local/bin/openssl
/usr/bin/openssl

И PHP, похоже, все еще имеет старую конфигурацию по умолчанию, по пути, которого больше нет в моей системе:

$ php -i | grep openssl
Configure Command =>  './configure'  '--prefix=/usr/local/zend' '--with-config-file-path=/usr/local/zend/etc' '--with-config-file-scan-dir=/usr/local/zend/etc/conf.d' '--disable-debug' '--enable-inline-optimization' '--disable-all' '--enable-libxml' '--enable-session' '--enable-spl' '--enable-xml' '--enable-hash' '--enable-reflection' '--with-pear' '--with-apxs2=/usr/local/zend/apache2/bin/apxs' '--with-layout=GNU' '--enable-filter' '--with-pcre-regex' '--with-zlib' '--enable-simplexml' '--enable-dom' '--with-libxml-dir=/usr/local' '--with-openssl=/usr/local/openssl-0.9.8zc' '--enable-pdo' '--with-pdo-sqlite' '--with-pdo-mysql=mysqlnd' '--with-libedit' '--with-pdo-pgsql' '--with-iconv' '--with-sqlite3' '--disable-phar' '--enable-xmlwriter' '--enable-xmlreader' '--enable-mysqlnd' '--enable-json' 'CC=gcc' 'CFLAGS=-fPIC '-O2' '-pipe' '-g' '-fno-common' '-g'' 'CPPFLAGS=-fPIC 'CXXFLAGS=-fPIC 'CXX=g++' 'LDFLAGS='
openssl
Openssl default config => /usr/local/openssl-0.9.8zc/ssl/openssl.cnf
openssl.cafile => /usr/local/etc/openssl/cert.pem => /usr/local/etc/openssl/cert.pem
openssl.capath => no value => no value

Я не нашел способа изменить конфигурацию Zend OpenSSL по умолчанию для PHP в Zend Server 8.5.2 и указать ее на новый OpenSSL в OSX.

Composer по-прежнему выдает ту же ошибку и не работает. Я просканировал StackOverflow здесь и там, не нашел решения, которое работает в моем случае. Любая помощь будет высоко ценится.

Спасибо!


Ответ сам себе: похоже, когда PHP компилируется, эти библиотеки встроены в PHP, поэтому обновление файлов библиотеки SSL не будет иметь никакого эффекта, если только PHP не будет перекомпилирован. Мне кажется, нет возможности обновить библиотеку OpenSSL в ZendServer, если только не загрузить более новую версию (более новых версий нет).


person Farside    schedule 29.02.2016    source источник
comment
Похоже, нет возможности обновить OpenSSL для PHP в ZendServer без перекомпиляции PHP и библиотек. Попытаюсь стереть состояние и перенастроить конфиги OpenSSL по умолчанию, чтобы они указывали на правильное место, где лежат сертификаты.   -  person Farside    schedule 01.03.2016
comment
Stack Overflow — это сайт для вопросов по программированию и разработке. Этот вопрос кажется не по теме, потому что он не о программировании или разработке. См. раздел О каких темах я могу задать здесь в Справочном центре. Возможно, Суперпользователь или Apple Stack Exchange лучше спросить. См. также раздел Где размещать вопросы о Dev Ops?.   -  person jww    schedule 01.03.2016
comment
@jww, извините, я видел здесь подобные вопросы, поэтому задал здесь. Это больше о конфигурации PHP и трудностях, с которыми я столкнулся во время разработки с помощью Composer.   -  person Farside    schedule 01.03.2016


Ответы (1)


После нескольких дней расследования выяснилось, что нет возможности обновить OpenSSL для PHP в ZendServer без перекомпиляции PHP и библиотек. Так что вопрос кажется неразрешимым. Нет простого способа сделать это. У вас по-прежнему будет системная версия OpenSSL, которая отличается от версии, предварительно скомпилированной с помощью PHP.

Я отказался от идеи обновить OpenSSL для PHP в ZendServer, так как он встроен в сам PHP. Вместо этого я откатил свои конфиги, и настройку ZendServer, чтобы он хоть как-то работал, со старой версией OpenSSL.


Это также может помочь в некоторых случаях без переустановки: problem-unable-to-get-local-issuer-certificate-" rel="nofollow noreferrer">для обновления сертификатов вручную

  1. Загружено cacert.pem с сайта http://curl.haxx.se/ca/cacert.pem.
  2. Скопируйте cacert.pem в '/usr/local/zend/etc/ssl/certs/'
  3. Измените конфигурацию CURL (Конфигурация сервера Zend -> PHP -> CURL) и измените:

curl.cainfo = '/usr/local/zend/etc/ssl/certs/cacert.pem'

  1. Перезапустите PHP и проверьте, может ли CURL читать URL-адрес HTTPS.

Дополнительную информацию можно найти в статье Исправление просроченного промежуточного сертификата в Mac OS X

person Farside    schedule 03.03.2016