Use o OpenSSL de macports em vez de OpenSSL do OSX

3

Estou usando o aplicativo do servidor 3 com o OSX 10.9.5, que veio com o Openssl 0.9.8zg e, como essa versão não permite o TLS 1.2, decidi fazer uma atualização para o OpenSSL 1.0.2j.

Como este OpenSSL vem por padrão, eu não posso simplesmente atualizá-lo, então eu usei macports para instalar uma versão mais nova, para ver se eu poderia usá-lo em vez da outra versão.

Depois que eu fiz a instalação, percebi que eu só era capaz de usar a versão mais nova no usuário não-root (através da linha de comando), se eu login para root continuo a usar a versão mais antiga.

Então eu adiciono a localização do macports no arquivo 'paths', e então eu pude usar o openssl também no root.

Mas agora eu não sei ao certo se o meu Server App (também conhecido como sistema) está usando o OpenSSL correto ou não.

Agora eu não mudei nenhum certificado, estou usando o padrão que veio na versão mais antiga. Eu nunca usei openssl antes e ainda estou tentando entender como funciona.

Se eu tentar usar o openssl na raiz ou em um usuário não-root, no meu servidor eu recebo esta saída com um erro:

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)
---

Onde parece que o TLS 1.2 é suportado, mas se eu tentar com um serviço externo, como SSLlabs, eu tenho isso:

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

Então, minha pergunta é se o meu sistema continua a usar as bibliotecas de versões mais antigas ou se há alguma coisa no certificado que diga que esse servidor apenas permite o TLS 1.0? Se continuar a usar as bibliotecas de versões mais antigas, como posso apontar para novas bibliotecas de versões?

UPDATE1:

Confirme no phpinfo que ainda estou usando a versão mais antiga. Então, minha pergunta é como posso substituir o openssl com a nova versão no macports?

    
por SipriusPT 29.11.2016 / 13:29

1 resposta

0

Server.app vem com binários pré-compilados que se ligam ao OpenSSL da Apple em /usr/lib . Embora você possa definir $PATH para alterar os programas executados na linha de comando, $PATH não afeta bibliotecas vinculadas por software.

Isso leva a alguns pensamentos:

  • Você teria que recompilar o Server.app contra o OpenSSL do MacPorts. Como você não tem o código-fonte exato para o Server.app, isso não é uma opção.
  • Você pode compilar seu próprio servidor com o OpenSSL do MacPorts. O MacPorts envia a maioria dos servidores Web de código aberto, mas você mesmo terá que configurá-los.
  • Se duas bibliotecas forem compatíveis com binários, você poderá definir uma variável de ambiente especial para instruir o carregador do macOS a ignorar o caminho absoluto em que espera a biblioteca e pesquisar primeiro um caminho diferente. Infelizmente, no caso do OpenSSL 0.9.8 vs 1.0.0, as bibliotecas não são compatíveis com binários ( /usr/lib/libssl.0.9.8.dylib vs. /opt/local/lib/libssl.1.0.0.dylib ), então essa não é uma opção aqui.

Como conseqüência, não vejo uma maneira de fazer o Server.app 3 usar o TLS 1.2, infelizmente.

    
por 05.12.2017 / 20:19