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:

  1. Solicite um certificado wildcard (⭐) com a cadeia completa (intermediário + raiz).
  2. Crie o novo Secret:
oc create secret tls [certificate_secret_name] -n openshift-ingress \
  --cert=/path/to/fullchain.crt --key=/path/to/private.key
  1. Atualize o Ingress Controller:
oc patch ingresscontroller default -n openshift-ingress-operator --type=merge \
  -p '{"spec":{"defaultCertificate":{"name":"[certificate_secret_name]"}}}'
  1. 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

Tendência