Solucionar problemas con los certificados SSL

Los procedimientos para solucionar problemas varían en función del uso de certificados SSL administrados por Google o certificados SSL autoadministrados.

Soluciona problemas de certificados administrados por Google

Existen dos tipos de estado para los certificados administrados por Google:

  • Estado administrado
  • Estado de los dominios

Estado administrado

Para verificar el estado del certificado, ejecuta el siguiente comando:

gcloud compute ssl-certificates describe CERTIFICATE_NAME \
    --global \
    --format="get(name,managed.status)"

Los valores del estado administrado son los siguientes:

Estado administrado Explicación
PROVISIONING

Se creó el certificado administrado por Google, y Google Cloud está trabajando con la autoridad certificada para firmarlo.

Aprovisionar un certificado administrado por Google puede demorar hasta 60 minutos desde el momento en que tu cambio de configuración del balanceador de cargas y tu DNS se propagaron a través de la Internet. Si actualizaste la configuración de tu DNS hace poco, los cambios pueden tardar bastante tiempo en propagarse por completo. A veces, la propagación puede demorar hasta 72 horas en todo el mundo, aunque suele tardar algunas horas. Para obtener más información sobre la propagación de DNS, consulta Propagación de cambios.

Si el certificado permanece en el estado PROVISIONING, asegúrate de que el certificado correcto esté asociado con el proxy de destino. Para verificar esto, ejecuta el comando gcloud compute target-https-proxies describe o gcloud compute target-ssl-proxies describe.

ACTIVE El certificado SSL administrado por Google se obtiene de la autoridad certificada. Puede tomar unos 30 minutos adicionales que el certificado esté disponible para que lo use un balanceador de cargas.
PROVISIONING_FAILED Es posible que veas PROVISIONING_FAILED de forma breve, incluso si el estado del certificado es, en realidad, ACTIVE. Vuelve a comprobar el estado.

Si el estado sigue siendo PROVISIONING_FAILED, se creó el certificado administrado por Google, pero la autoridad certificada no puede firmarlo. Verifica que completaste todos los pasos en Usa certificados SSL administrados por Google.

Google Cloud reintenta el aprovisionamiento hasta que lo logra o hasta que el estado cambia a PROVISIONING_FAILED_PERMANENTLY.
PROVISIONING_FAILED_PERMANENTLY Se creó el certificado administrado por Google, pero la autoridad certificada no puede firmarlo debido a un problema de configuración del balanceador de cargas o del DNS. En este estado, Google Cloud no reintenta el aprovisionamiento.

Crea un certificado SSL de reemplazo administrado por Google y asegúrate de que el reemplazo esté asociado con el proxy de destino del balanceador de cargas. Verifica o completa todos los pasos en Usa certificados SSL administrados por Google. Luego, puedes borrar el certificado que falló en el aprovisionamiento de forma permanente.
RENEWAL_FAILED

No se pudo completar la renovación del certificado administrado por Google debido a un problema con el balanceador de cargas o la configuración de DNS. Si alguno de los dominios o subdominios de un certificado administrado no dirige a la dirección IP del balanceador de cargas mediante un registro A/AAAA, el proceso de renovación falla. El certificado existente seguirá entregando, pero vencerá pronto. Verifica la configuración.

Si el estado sigue siendo RENEWAL_FAILED, aprovisiona un certificado nuevo, cambia al certificado nuevo y borra el certificado anterior.

Para obtener más información sobre la renovación de certificados, consulta Renovación de certificados SSL administrados por Google.

Estado de los dominios

Para verificar el estado del dominio, ejecuta el siguiente comando:

gcloud compute ssl-certificates describe CERTIFICATE_NAME \
    --global \
    --format="get(managed.domainStatus)"

Los valores del estado del dominio se describen en esta tabla.

Estado de los dominios Explicación
PROVISIONING El certificado administrado por Google se crea para el dominio. Google Cloud está trabajando con la autoridad certificada para firmar el certificado.
ACTIVE El dominio se validó correctamente para aprovisionar el certificado. Si el certificado SSL es para varios dominios, solo se puede aprovisionar una vez que todos los dominios tengan un estado ACTIVE y el estado administrado del certificado también sea ACTIVE.
FAILED_NOT_VISIBLE

No se completó el aprovisionamiento de certificados para el dominio. Cualquiera de los siguientes puede ser el problema:

  • El registro DNS del dominio no se resuelve en la dirección IP del balanceador de cargas de Google Cloud. A fin de resolver este problema, actualiza los registros A/AAAA DNS para que apunten a la dirección IP del balanceador de cargas.

    El DNS no se debe resolver en ninguna otra dirección IP que la del balanceador de cargas. Por ejemplo, si un registro A se resuelve con el balanceador de cargas correcto, pero el AAAA se resuelve con algo más, el estado del dominio es FAILED_NOT_VISIBLE.

  • Los registros A y AAAA recién actualizados pueden tardar una cantidad de tiempo significativa en propagarse por completo. A veces, la propagación en Internet demora hasta 72 horas en todo el mundo, aunque suele tardar algunas horas. El estado del dominio sigue siendo FAILED_NOT_VISIBLE hasta que se complete la propagación.
  • El certificado SSL no está vinculado al proxy de destino del balanceador de cargas. Para resolver este problema, actualiza la configuración del balanceador de cargas.
  • Los puertos frontend para la regla de reenvío global no incluyen el puerto 443 en el balanceador de cargas de red con proxy externo con proxy SSL. Para solucionar esto, agrega una regla de reenvío nueva con el puerto 443.
  • Se adjunta un mapa de certificados del Administrador de certificados al proxy de destino. El mapa de certificados adjuntos tiene prioridad y se ignoran los certificados adjuntos directamente. Para resolverlo, desconecta el mapa de certificados del proxy.
  • Si el estado administrado es PROVISIONING, Google Cloud seguirá reintentando el aprovisionamiento, incluso si el estado del dominio es FAILED_NOT_VISIBLE.
FAILED_CAA_CHECKING Se produjo un error en el aprovisionamiento del certificado debido a un problema de configuración con el registro de CAA del dominio Asegúrate de haber seguido el procedimiento correcto.
FAILED_CAA_FORBIDDEN Se produjo un error en el aprovisionamiento del certificado porque el registro de CAA del dominio no especifica una CA que deba usar Google Cloud Asegúrate de haber seguido el procedimiento correcto.
FAILED_RATE_LIMITED Se produjo un error en el aprovisionamiento del certificado porque una autoridad certificada tiene un límite de frecuencia de solicitudes de firma de certificados. Puedes aprovisionar un certificado nuevo, cambiar al certificado nuevo y borrar el certificado anterior, o puedes comunicarte con el equipo de Asistencia de Google Cloud.

Renovación del certificado administrado

Si alguno de los dominios o subdominios de un certificado administrado no dirige a la dirección IP del balanceador de cargas o apunta a una IP junto con la IP del balanceador de cargas, el proceso de renovación falla. Para evitar que falle la renovación, asegúrate de que todos los dominios y los subdominios apunten a la dirección IP del balanceador de cargas.

Soluciona problemas de certificados SSL autoadministrados

En esta guía, se describe cómo solucionar problemas de configuración para certificados SSL autoadministrados.

El certificado no se puede analizar

Google Cloud requiere certificados en formato PEM. Si el certificado tiene formato PEM, verifica lo siguiente:

Puedes validar el certificado mediante el siguiente comando de OpenSSL y reemplazar CERTIFICATE_FILE por la ruta al archivo del certificado:

openssl x509 -in CERTIFICATE_FILE -text -noout

Si OpenSSL no puede analizar tu certificado, haz lo siguiente:

Falta el nombre común o el nombre alternativo del asunto

Google Cloud requiere que el certificado tenga un nombre común (CN) o un nombre alternativo de la entidad (SAN). Consulta la sección Crea una CSR para obtener más información.

Si ninguno de estos atributos está presente, Google Cloud muestra un mensaje de error como el siguiente cuando intentas crear un certificado autoadministrado:

ERROR: (gcloud.compute.ssl-certificates.create) Could not fetch resource:
 -   The SSL certificate is missing a Common Name(CN) or Subject Alternative
   Name(SAN).

La clave privada no se puede analizar

Google Cloud requiere claves privadas con formato PEM que cumplan con los criterios de clave privada.

Puedes validar la clave privada mediante el siguiente comando de OpenSSL, en el que debes reemplazar PRIVATE_KEY_FILE por la ruta a la clave privada:

    openssl rsa -in PRIVATE_KEY_FILE -check

Las siguientes respuestas indican un problema con tu clave privada:

  • unable to load Private Key
  • Expecting: ANY PRIVATE KEY
  • RSA key error: n does not equal p q
  • RSA key error: d e not congruent to 1
  • RSA key error: dmp1 not congruent to d
  • RSA key error: dmq1 not congruent to d
  • RSA key error: iqmp not inverse of q

Para solucionar el problema, debes crear una clave privada y un certificado nuevos.

Claves privadas con frases de contraseña

Si OpenSSL solicita una frase de contraseña, deberás quitar la frase de contraseña de la clave privada para poder usarla con Google Cloud. Puedes usar el siguiente comando de OpenSSL:

openssl rsa -in PRIVATE_KEY_FILE \
    -out REPLACEMENT_PRIVATE_KEY_FILE

Reemplaza los marcadores de posición por valores válidos:

  • PRIVATE_KEY_FILE: Es la ruta a la clave privada protegida por una frase de contraseña
  • REPLACEMENT_PRIVATE_KEY_FILE: la ruta de acceso en la que deseas guardar una copia de la clave privada como texto sin formato.

Vencimiento de certificados intermedios

Si un certificado intermedio vence antes que el certificado del servidor (de entidad final), esto podría indicar que la AC no sigue las prácticas recomendadas.

Cuando un certificado intermedio caduca, es posible que el certificado de entidad final usado en Google Cloud no sea válido. Esto depende del cliente SSL, de la siguiente manera:

  • Algunos clientes SSL solo miran la hora de vencimiento del certificado de entidad final e ignoran los certificados intermedios vencidos.
  • Algunos clientes SSL tratan una cadena con certificados intermedios vencidos como no válida y muestran una advertencia.

Para solucionar este problema, sigue estos pasos:

  1. Espere a que la CA cambie a un nuevo certificado intermedio.
  2. Solicítales un nuevo certificado.
  3. Vuelve a subir el certificado nuevo con las claves nuevas.

La CA también puede permitir la firma cruzada para certificados intermedios. Consulta con la AC para confirmar.

El exponente público de RSA es demasiado grande.

El siguiente mensaje de error aparece cuando el exponente público de RSA es mayor que 65537. Asegúrate de usar 65537, como se especifica en RFC 4871.

ERROR: (gcloud.compute.ssl-certificates.create) Could not fetch resource:
 -   The RSA public exponent is too large.

Quita el certificado SSL del proxy de destino

En los siguientes pasos, se demuestra cómo quitar un solo certificado SSL adjunto al proxy https de destino:

  1. Exporta el proxy de destino https a un archivo temporal.

    gcloud compute target-https-proxies export TARGET_PROXY_NAME > /tmp/proxy
    
  2. Edita el archivo /tmp/proxy y quita las siguientes líneas:

    sslCertificates:
    -   https://www.googleapis.com/compute/v1/projects/...
    
  3. Importa el archivo /tmp/proxy:

    gcloud compute target-https-proxies import TARGET_PROXY_NAME \
       --source=/tmp/proxy
    
  4. Borra el certificado SSL (opcional).

    gcloud compute ssl-certificates delete SSL_CERT_NAME
    

Reemplaza lo siguiente:

  • TARGET_PROXY_NAME: el nombre del proxy HTTPS de destino.
  • SSL_CERT_NAME: es el nombre del certificado SSL.