O OpenSSL 0.9.8zc - 0.9.8zd “quebrou” meus certificados.

1

Eu tenho um certificado auto-assinado (e CA) criado em um Mac usando o OpenSSL 0.9.8zc. Eu uso o certificado para proteger a conexão com o meu servidor svn. Com a atualização mais recente do OS X, o OpenSSL foi atualizado para 0.9.8zd. Agora não consigo me conectar ao meu servidor, recebo "verificação de certificado com falha" do svn.

Usando o openssl verify:

openssl verify -CAfile ~/Desktop/Certificates.pem -check_ss_sig  ~/Downloads/svn.pem

Eu obtenho

~/Downloads/svn.pem: /CN=My Open Directory Certification Authority/O=Me/OU=MACOSX OpenDirectory Root CA/emailAddress=webmaster@me
error 7 at 2 depth lookup:certificate signature failure

Parece que a assinatura da minha CA agora é considerada "quebrada". Minhas perguntas:

  1. Como posso investigar mais para descobrir o que é "quebrado" exatamente sobre o meu certificado, por isso não repito este erro?

  2. Existe uma maneira de corrigir esse problema de reemissão de todos os certificados que começam com CA?

por Anton 10.04.2015 / 20:09

3 respostas

1

Parece que este é um problema com o Certificate Assistant que produz certificados malformados que as novas verificações mais apertadas do openssl 0.9.8zd rejeitam. Isto vem de uma discussão em openssl.org 1

Ele inclui no final um script python para corrigir um certificado .pem que eu consegui usar com sucesso, eu cito caso o link esteja quebrado ...

from pyasn1.codec.der import decoder, encoder   
from pyasn1_modules import pem, rfc2459

cert_der = pem.readPemFromFile(open("RabbitMQ_Test.pem", "r"))
        cert, _ = decoder.decode(cert_der, asn1Spec=rfc2459.Certificate())

cert.setComponentByName("signatureAlgorithm",
                                cert.getComponentByName("tbsCertificate").
                                getComponentByName("signature"))

fixed_cert_pem = open("RabbitMQ_Test_Fixed.pem", "w")
fixed_cert_pem.write("-----BEGIN CERTIFICATE-----\n")
fixed_cert_pem.write(encoder.encode(cert).encode("base64"))
fixed_cert_pem.write("-----END CERTIFICATE-----\n")
fixed_cert_pem.close()
    
por 15.04.2015 / 23:28
0

Se você está no OS X 10.10.3 e isso começou a acontecer:

NB: Esta é uma solução temporária, parece que o problema é mais upstream

De repente eu comecei a ter esse erro aparecer como resultado da atualização do OSX para 10.10.3 - como você disse, parece que a quebra é causada pela nova versão do OpenSSL (0.9.8zd) que eles incluíram.

Como uma solução até chegarmos ao fim, usei o pacote OpenSSL do homebrew -

$ brew update
$ brew install openssl
$ brew link openssl --force 

você também pode precisar atualizar certs obsoletos, que com o rvm é apenas um caso de execução

$ rvm osx-ssl-certs update all

Mas, ao que parece, você sabe o que está fazendo lá

Também vale a pena notar que o homebrew recomenda contra links openssl, então, uma vez que isso esteja resolvido no upstream, você provavelmente vai querer rodar isso para limpar a bagunça que fizemos:

$ brew unlink openssl 
    
por 13.04.2015 / 07:35
0

Eu tive um problema semelhante ao tentar se conectar a um servidor Apache em execução no 10.10.3 usando client & certificados do servidor. O script python funcionava no certificado do servidor SSL para o Apache, mas o Safari ainda não conseguia se conectar ao servidor usando o certificado do cliente no keychain; o servidor Apache estava rejeitando o certificado do cliente.

Eu tive que exportar o certificado do cliente, usar o script python nele e importá-lo de volta para o keychain para substituir o original.

    
por 26.05.2015 / 23:05