Quando realizamos a substituição do certificado padrão de ingress no OpenShift por um personalizado, é comum nos depararmos com o erro abaixo:
RouterCertsDegraded: secret/v4-0-config-system-router-certs.spec.data[apps.example.com] -n openshift-authentication: certificate could not validate route hostname oauth-openshift.apps.example.com: x509: certificate signed by unknown authority
Nesse artigo, trago de forma objetiva e prática como diagnosticar e corrigir esse problema.
Entendendo o Cenário
Após aplicar o novo certificado, o operador de autenticação (authentication) entra em estado Degraded. Isso ocorre porque o certificado utilizado não está completo ou corretamente configurado.
Diagnóstico Rápido
Primeiro, valide o estado do operador:
oc get co authentication
Se DEGRADED=True, seguimos investigando:
oc get co authentication -o yaml
Busque por mensagens de erro sobre “certificate signed by unknown authority”.
Também é útil verificar os logs do pod oauth-openshift:
oc logs <oauth-openshift_pod> -n openshift-authentication
Causa Raiz
O certificado que substituiu o padrão não possui a cadeia completa de confiança:
- Wildcard certificate (
*.apps.[cluster].[domínio]) - CA intermediária (se aplicável)
- CA Raiz
Ou o ConfigMap custom-ca não está corretamente configurado com a raiz confiável.
Solução Prática
1. Verificar a Cadeia de Certificados
Identifique qual certificado está sendo usado pelo Ingress Controller:
oc get ingresscontroller.operator -n openshift-ingress-operator -o yaml | grep -A1 "defaultCertificate"
Extraia o certificado atual:
oc extract secret/[certificate_secret_name] -n openshift-ingress --to=/tmp/
openssl crl2pkcs7 -nocrl -certfile /tmp/tls.crt | openssl pkcs7 -print_certs -noout
A saída deve mostrar o wildcard, intermediário(s) e a raiz em ordem.
2. Verificar o ConfigMap custom-ca
Valide o que está configurado como trustedCA:
oc get proxy cluster -o yaml | grep -A1 "trustedCA"
Depois extraia e confira:
oc extract cm/[custom-ca_name] -n openshift-config --to=/tmp/
openssl crl2pkcs7 -nocrl -certfile /tmp/ca-bundle.crt | openssl pkcs7 -print_certs -noout
Se faltar a raiz, atualize o ConfigMap adicionando o certificado correto.
3. Corrigir e Aplicar Novo Certificado
Se o certificado atual não atender aos requisitos, gere um novo:
- Solicite um certificado wildcard (⭐) com a cadeia completa (intermediário + raiz).
- Crie o novo Secret:
oc create secret tls [certificate_secret_name] -n openshift-ingress \
--cert=/path/to/fullchain.crt --key=/path/to/private.key
- Atualize o Ingress Controller:
oc patch ingresscontroller default -n openshift-ingress-operator --type=merge \
-p '{"spec":{"defaultCertificate":{"name":"[certificate_secret_name]"}}}'
- Acompanhe a normalização:
oc get co authentication
4. Solução Temporária: Reverter para o Certificado Padrão
Se não puder gerar um novo certificado de imediato, é possível voltar ao certificado automático do OpenShift:
oc patch ingresscontroller default -n openshift-ingress-operator --type=merge \
-p '{"spec":{"defaultCertificate":null}}'
Considerações Finais
Trabalhar corretamente a cadeia de confiança dos certificados é vital para manter o cluster OpenShift em pleno funcionamento. Este passo a passo foi estruturado de maneira direta, baseado em experiências práticas.

Deixe um comentário