Mensagem de erro
state=error: certificate verify failed (certificate has expired)
Também aparece como
- OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 peeraddr=127.0.0.1:8443 state=error: certificate verify failed (certificate has expired)
Mensagem completa: “SSL_connect returned=1 errno=0 peeraddr=<ip>:<port> state=error: certificate verify failed (certificate has expired)”. Certificados que ainda não são válidos geram “(certificate is not yet valid)”.
Ruby openssl (Net::HTTP, Faraday, RubyGems) — OpenSSL::SSL::SSLError from SSL_connect
O que significa
O OpenSSL encontrou na cadeia um certificado cujo período de validade terminou antes da hora atual da máquina que roda o Ruby. Na maioria das vezes, o certificado do servidor não foi renovado ou a renovação não foi implantada; em sistemas antigos, um bundle de CAs desatualizado pode fazer o OpenSSL montar o caminho por uma raiz expirada.
Por que acontece
O certificado do servidor expirou
comumA renovação falhou, ou o serviço não foi recarregado depois da renovação.
Um bundle de CAs desatualizado em um sistema antigo
ocasionalImagens e servidores de longa duração cujo pacote ca-certificates nunca foi atualizado podem conhecer apenas versões expiradas das raízes públicas.
O relógio do sistema está errado
ocasionalUm relógio adiantado faz certificados válidos parecerem expirados.
Como corrigir
- 1.
Verificar a data de término do certificado servido
Se ela já passou, renove; se estiver em ordem, examine o bundle e o relógio do cliente.
bash echo | openssl s_client -connect api.example.com:443 -servername api.example.com 2>/dev/null \ | openssl x509 -noout -subject -enddate - 2.
Atualizar o bundle de CAs do cliente
Atualizar o ca-certificates corrige clientes que montam caminhos por raízes aposentadas.
bash # Old images: refresh the CA bundle Ruby's OpenSSL uses apt-get update && apt-get install --only-upgrade -y ca-certificates ruby -ropenssl -e 'p OpenSSL::X509::DEFAULT_CERT_FILE' - 3.
Renovar o certificado e recarregar o servidor
Renove o certificado e recarregue o terminador TLS; confira o resultado de fora, pela rede.
bash sudo certbot renew && sudo systemctl reload nginx
Erros relacionados
curl: (60) SSL certificate problem: certificate has expiredcurl (OpenSSL backend)x509: certificate has expired or is not yet valid: current time 2026-08-20T15:4…Go crypto/x509state=error: certificate verify failed (unable to get local issuer certificate)Ruby openssl (Net::HTTP, Faraday, HTTParty, RubyGems)