nfephp-org / sped-gnre

:octocat: API para emissão de guias GNRE para a SEFAZ
GNU General Public License v3.0
62 stars 59 forks source link

Erro de certificado 14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate #49

Closed jone22e closed 3 years ago

jone22e commented 3 years ago

Bom dia,

Já tentei todas as soluções propostas, mas continuo com o erro:

14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate.

Baixei a hierarquia V5 exportei e juntei em um arquivo.

Com a configuração assim:

   CURLOPT_SSL_VERIFYHOST => 2,
    CURLOPT_SSL_VERIFYPEER => 1,
    CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1,
    CURLOPT_CAINFO => 'ARQUIVO.pem'

Retorna:

SSL certificate problem: self signed certificate in certificate chain

Então altero: CURLOPT_SSL_VERIFYPEER => 0 e o erro volta

14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate.

Tentei:

openssl s_client -showcerts -prexit -connect www.gnre.pe.gov.br:443 > cadeia.pem

e alterar: CURLOPT_CAINFO => 'cadeia.pem'

Mas o resultado ainda é o mesmo: bad certificate.

Tentei extrair o priv e pub do certificado manualmente pelo openssl, mas não faz diferença.

Se eu passo: CURLOPT_SSLVERSION => 3 que é o padrão diz que não tem suporte:

OpenSSL was built without SSLv3 support

Se alguém tiver alguma outra solução fico agradecido.

jone22e commented 3 years ago

Depois de 12h tentando... achei uma solução:

Executar esse comando:

openssl pkcs12 -in certificado.pfx -out ca.pem -cacerts -nokeys

E então usar ele na configuração:

CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1
CURLOPT_CAINFO => "ca.pem"

Dessa forma resolve o erro bad certificate.