Используйте OpenSSL из macports вместо OpenSSL из OSX

Я использую серверное приложение 3 с OSX 10.9.5, которое поставляется с Openssl 0.9.8zg, и, поскольку эта версия не поддерживает TLS 1.2, я решил выполнить обновление до OpenSSL 1.0.2j.

Поскольку этот OpenSSL был установлен по умолчанию, я не могу просто обновить его, поэтому я использовал macports для установки более новой версии, чтобы посмотреть, могу ли я использовать его вместо другой версии.

После того, как я выполнил установку, я заметил, что смог использовать более новую версию только под пользователем без полномочий root (через командную строку), если я вхожу в систему с правами root, я продолжаю использовать старую версию.

Итак, я добавил расположение macports в файле «paths», а затем смог использовать openssl также в корневом каталоге.

Но теперь я не знаю наверняка, использует ли мое серверное приложение (также известное как система) правильный OpenSSL или нет.

Сейчас я не менял ни одного сертификата, я использую сертификат по умолчанию, который был в старой версии. Я никогда раньше не использовал openssl и все еще пытаюсь понять, как это работает.

Если я попытаюсь использовать openssl с правами root или с пользователем без полномочий root, на моем сервере я получу следующий результат с ошибкой:

remote:~ root# openssl s_client -connect remote.X.pt:443 -tls1_2
CONNECTED(00000003)
140735302370144:error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number:s3_pkt.c:362:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 5 bytes and written 7 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : 0000
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1480421165
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
---

Кажется, что TLS 1.2 поддерживается, но если я попытаюсь использовать стороннюю службу например, SSLlabs, я получил следующее:

Protocols
TLS 1.2 No
TLS 1.1 No
TLS 1.0 Yes
SSL 3   No
SSL 2   No

Итак, мой вопрос в том, продолжает ли моя система использовать библиотеки более старых версий или есть ли что-нибудь в сертификате, которое говорит, что этот сервер просто разрешает TLS 1.0? Если он продолжает использовать библиотеки старой версии, как я могу указать на библиотеки новой версии?

UPDATE1:

Просто подтвердите в phpinfo, что я все еще использую старую версию. Итак, мой вопрос: как я могу заменить openssl на новую версию в macports?

2
задан 29 November 2016 в 16:07
1 ответ

Server.app поставляется с предварительно скомпилированными двоичными файлами, которые связываются с Apple OpenSSL в / usr / lib . Хотя вы можете установить $ PATH , чтобы изменить, какие программы вы выполняете в командной строке, $ PATH не влияет на библиотеки , связанные программным обеспечением .

Это наводит на пару мыслей:

  • Вам придется перекомпилировать Server.app для MacPorts OpenSSL. Поскольку у вас нет точного исходного кода для Server.app, это не вариант.
  • Вы можете скомпилировать свой собственный сервер с OpenSSL MacPorts. MacPorts поставляет большинство веб-серверов с открытым исходным кодом, но вам придется настраивать их самостоятельно.
  • Если две библиотеки являются двоично-совместимыми, вы можете установить специальную переменную среды, чтобы загрузчик macOS игнорировал абсолютный путь, по которому он ожидает библиотеки и сначала ищите другой путь. К сожалению, в случае OpenSSL 0.9.8 и 1.0.0 библиотеки не являются двоично-совместимыми ( /usr/lib/libssl.0.9.8.dylib vs. / opt / local / lib / libssl.1.0.0.dylib ), так что здесь не вариант.

Как следствие, я не вижу способа заставить Server.app 3 использовать TLS 1.2, к сожалению.

0
ответ дан 3 December 2019 в 14:20

Теги

Похожие вопросы