Mensagem de erro
ERROR: The certificate of 'api.example.com' has expired.
Builds do wget com GnuTLS imprimem esta linha depois da genérica “ERROR: The certificate of '<host>' is not trusted.” e antes de “The certificate has expired”. Builds com OpenSSL imprimem “ERROR: cannot verify <host>'s certificate, issued by '…':” seguido de “Issued certificate has expired.”
O que significa
O certificado do servidor (ou outro certificado da cadeia dele) já passou da data notAfter segundo o relógio desta máquina, e o backend GnuTLS do wget recusa a conexão. A CA é confiável; o problema é só o período de validade. O wget sai com o código de saída 5.
Por que acontece
O certificado não foi renovado
comumUma tarefa de renovação que parou de rodar, um desafio ACME que falha depois de uma mudança no DNS ou no firewall, ou um certificado instalado manualmente que ninguém acompanhava.
O certificado renovado está no disco, mas não é servido
comumO ponto de terminação TLS (nginx, Apache, HAProxy, um balanceador de carga ou uma CDN) continua servindo o certificado carregado antes até ser recarregado ou até que o novo seja enviado a ele.
O relógio do cliente está errado
ocasionalUma máquina com o relógio muito adiantado vê certificados válidos como expirados. Placas embarcadas sem relógio de tempo real costumam iniciar com a data errada até que o NTP sincronize o horário.
Como corrigir
- 1.
Verificar as datas do certificado realmente servido
Compare o notAfter com a hora UTC atual. Se o certificado servido for o antigo, mas já existir um mais novo, o servidor ainda não o carregou.
bash echo | openssl s_client -connect api.example.com:443 -servername api.example.com 2>/dev/null \ | openssl x509 -noout -subject -startdate -enddate - 2.
Renovar e recarregar
Renove pelo seu cliente ACME ou pela sua CA e depois recarregue todos os serviços que fazem a terminação TLS desse nome; automatize as duas etapas para que a próxima renovação não dependa de alguém se lembrar.
bash sudo certbot renew --cert-name api.example.com sudo systemctl reload nginx # or apache2 / haproxy: reload whatever terminates TLS - 3.
Corrigir a hora do cliente
Se o certificado for válido quando verificado de outra máquina, ative o NTP na máquina com falha.
bash date -u timedatectl status sudo timedatectl set-ntp true
Erros relacionados
ERROR: The certificate of 'api.example.com' is not trusted.GNU Wget built with GnuTLS (Debian, Ubuntu before 22.04 used it too)curl: (60) SSL certificate problem: certificate has expiredcurl (OpenSSL backend)verify error:num=10:certificate has expiredOpenSSL CLI (openssl s_client / openssl verify)x509: certificate has expired or is not yet valid: current time 2026-08-20T15:4…Go crypto/x509