Resolver problemas

Como resolver o erro cURL 60 de certificado SSL no WordPress

Revisto a 7 min de leitura wordpress errores ssl

Quando tenta atualizar o WordPress, instalar um plugin ou ligar-se a um serviço externo, pode encontrar uma mensagem semelhante a esta:

Error en la actualización: Descarga fallida. cURL error 60: SSL certificate problem

O erro indica que o PHP ou o cURL não conseguiram verificar a cadeia de confiança do certificado apresentado pelo servidor remoto. Não significa necessariamente que o certificado do seu próprio site tenha expirado.

Possíveis causas a confirmar

A mensagem é compatível com vários cenários, mas não permite escolher um sem mais testes:

  • Uma versão antiga do WordPress com um pacote de autoridades de certificação desatualizado.
  • O repositório de certificados do sistema operativo ou do PHP está desatualizado ou mal configurado.
  • A data e a hora do servidor não estão corretas.
  • O certificado do servidor remoto expirou, não corresponde ao seu domínio ou não entrega a cadeia intermédia completa.
  • Um proxy, antivírus, firewall ou plugin de segurança está a intercetar a ligação HTTPS.

Não desative a verificação SSL

Não utilize filtros que forcem https_ssl_verify para false.

Desativar a verificação permite que o WordPress aceite certificados não fiáveis e facilita ataques man-in-the-middle. Além disso, esconde a causa real e pode afetar outras ligações feitas através da API HTTP do WordPress se o filtro for aplicado de forma geral.

1. Verifique a data e o URL que falha

Reveja a mensagem completa para identificar o domínio remoto. Se o erro aparecer ao atualizar o WordPress, normalmente a ligação é feita a api.wordpress.org ou downloads.wordpress.org. Se só ocorrer com um plugin concreto, pode afetar o serviço externo utilizado por esse plugin.

Verifique também que a data, a hora e o fuso horário do servidor estão corretos. Uma diferença importante pode fazer com que um certificado válido pareça expirado ou ainda não válido.

2. Atualize o WordPress, o PHP e os certificados

Antes de modificar a configuração:

  1. Faça uma cópia de segurança.
  2. Atualize o WordPress para uma versão compatível e mantida.
  3. Atualize os plugins e temas envolvidos.
  4. Verifique que a versão de PHP continua a receber suporte.

O WordPress inclui o seu próprio pacote de certificados em wp-includes/certificates/ca-bundle.crt. Não substitua apenas esse ficheiro por um descarregado de uma fonte desconhecida: atualize o núcleo completo para que todos os seus ficheiros pertençam à mesma versão.

3. Reveja a configuração de certificados do PHP

Na informação do PHP pode verificar os valores de curl.cainfo e openssl.cafile. Se estiverem definidos, devem apontar para um ficheiro de certificados existente, legível e atualizado.

A partir de SSH também pode verificar a ligação sem desativar nenhuma validação:

curl -Iv https://api.wordpress.org/

Teste exatamente o URL indicado no erro. Se o comando mostrar a mesma falha, reveja o repositório de certificados do servidor e a cadeia entregue pelo destino. Se funcionar na consola mas falhar a partir do WordPress, tenha em conta que a consola pode usar outro repositório: reveja a configuração da versão de PHP que executa o site e registe o pedido a partir do WordPress antes de o atribuir a um plugin.

4. Exclua interferências de plugins e proxies

Só se o registo ou a configuração indicarem uma possível interceção, desative temporariamente e de forma controlada os plugins de segurança ou proxy que possam modificar pedidos de saída. Repita o mesmo pedido antes e depois; a mudança de resultado é a evidência útil. Não faça este teste em produção sem uma cópia de segurança e uma janela de manutenção.

Se utilizar um proxy empresarial ou um antivírus que inspeciona HTTPS, a sua autoridade de certificação deve estar instalada corretamente no repositório utilizado pelo PHP.

5. Contacte o fornecedor quando afetar o servidor

Se não administrar o servidor, forneça ao fornecedor o URL remoto, a mensagem completa, a hora do teste e a versão de PHP. Este poderá verificar o pacote de certificados, a configuração de cURL/OpenSSL e se existe alguma interceção das ligações de saída.

A solução correta é repor uma cadeia de confiança válida. Desativar a verificação SSL não deve ser utilizado nem sequer como solução temporária.

Se a atualização também não puder ser descarregada

Não force o descarregamento sem TLS válido. Se precisar de atualizar o núcleo manualmente, utilize a distribuição oficial, guarde primeiro uma cópia e siga um procedimento de atualização compatível com a versão instalada. Uma reinstalação da mesma versão e uma atualização não são a mesma operação.

Ao partilhar o URL que falha, elimine tokens e parâmetros privados. Um curl correto a partir do seu computador não verifica o repositório de certificados do alojamento; recolha o teste a partir do ambiente onde aparece o erro e distinga sempre CLI de PHP web.

Também lhe pode ser útil

Algo não bate certo ou mudou? Diga-nos e revemos.