Resolver problemas
Como resolver o erro cURL 60 de certificado SSL no WordPress
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:
- Faça uma cópia de segurança.
- Atualize o WordPress para uma versão compatível e mantida.
- Atualize os plugins e temas envolvidos.
- 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
- Depurar erros no WordPress Localize ecrãs em branco e falhas internas do WordPress enviando WP_DEBUG para um registo privado, s...
- Diagnosticar "Agendamento falhado" ou "Missed schedule" Verifique porque é que um artigo agendado não foi publicado antes de substituir o WP-Cron por uma ta...
- Diagnosticar erros criptográficos do Sodium no WordPress Distingue a ausência da extensão Sodium de um argumento inválido no sodium_compat antes de alterar a...
- Elementor 3.6.x, problemas históricos de compatibilidade Guia histórico para diagnosticar erros surgidos ao atualizar o Elementor 3.6 sem os atribuir todos à...
Algo não bate certo ou mudou? Diga-nos e revemos.