Saltar al contenido
buybitcoinsmart

Glosario / Referencia para desarrolladores

Certificado intermedio

¿Qué es el certificado intermedio?
El certificado intermedio se sitúa entre un certificado raíz, que lo firma, y un certificado de hoja, que él firma, para que la clave privada del certificado raíz pueda permanecer fuera de línea y sin usarse.

Las autoridades de certificación (CA) nunca firman el certificado de un sitio web con la clave del certificado raíz. Firman un certificado intermedio, guardan la clave del certificado raíz fuera de línea y emiten desde el intermedio, que puede reemplazarse en semanas y no en los veinte años que vive un certificado raíz. Cuando un servidor olvida enviar su certificado intermedio, los navegadores disimulan el hueco y los clientes más estrictos no, así que un sitio puede verse bien en Chrome y fallar en una aplicación.

Cómo funciona

Un certificado intermedio es un certificado de autoridad que no es un ancla de confianza. Lleva la extensión basicConstraints con el indicador CA en true, lo que le permite firmar otros certificados, y a su vez está firmado por un certificado raíz o por otro certificado intermedio. La verificación asciende desde el certificado del servidor, contrastando cada firma con la clave que contiene el certificado de encima, y se detiene al llegar a algo que ya está en el almacén de certificados local.

Repartir así la emisión aporta tres cosas. La clave del certificado raíz permanece en un módulo fuera de línea que solo sale para ceremonias pautadas y ante testigos. El daño queda acotado, porque un certificado intermedio comprometido puede revocarse y volver a emitirse sin tocar el almacén de certificados raíz de ningún dispositivo. Y una autoridad puede separar sus líneas de producto, de modo que los problemas del nivel automatizado y barato no afecten al nivel auditado.

La firma cruzada es el truco sin el cual una autoridad nueva no podría usarse. Una misma clave intermedia puede tener dos certificados: uno firmado por el certificado raíz de su propia organización y otro firmado por un certificado raíz consolidado que ya está presente en dispositivos antiguos. Let's Encrypt se apoyó en esto durante años, porque ISRG Root X1 faltaba en las versiones de Android que habían dejado de recibir actualizaciones, así que servía una cadena de certificados con firma cruzada de IdenTrust. La muleta sobrevivió al certificado raíz que tenía detrás, que caducó el 30 de septiembre de 2021, y Let's Encrypt dejó por fin de servir la cadena con firma cruzada el 6 de junio de 2024.

El armado de la cadena de certificados es la parte en la que se equivocan los operadores. Un servidor debería enviar su propio certificado más todos los certificados intermedios que tenga por encima, sin llegar al certificado raíz, que el cliente ya tiene. Los navegadores disimulan las omisiones descargando la pieza que falta desde la URL de la extensión de acceso a la información de la autoridad o reutilizando una copia en caché. Una biblioteca de pagos, una aplicación móvil o un cliente de línea de comandos no suele hacer ninguna de las dos cosas y simplemente informa de que la cadena no es de confianza.

Dónde aparece

BIP70 incluía los certificados intermedios dentro del propio mensaje de pago. El campo pki_data llevaba una estructura X509Certificates cuyo primer elemento era el propio certificado del comerciante, seguido de los certificados intermedios necesarios para llegar a un certificado raíz, que se omitía porque se esperaba que la billetera ya lo tuviera. Es exactamente el orden que envía un servidor TLS, trasladado a un búfer de protocolo.

Fuera de bitcoin, los certificados intermedios se delatan cada vez que una conexión funciona en un programa y falla en otro. Un exchange cuyo endpoint de API lanza un error de certificado a un script de trading mientras el sitio web carga con normalidad ha omitido casi siempre un certificado intermedio de su cadena de certificados. Probar con una herramienta que no haga la reparación silenciosa del navegador es la forma de detectarlo antes de que lo haga su bot.

Certificado intermedio frente a certificado raíz

Un certificado raíz y uno intermedio son ambos certificados de autoridad, y la diferencia está en quién los firmó y dónde reside la clave. Un certificado raíz está autofirmado y obtiene su poder de la lista de inclusión de un proveedor. Un certificado intermedio obtiene su poder de la firma que tiene encima, lo que significa que la autoridad emisora puede revocarlo en una tarde, sin ninguna actualización de software en ninguna parte. En el funcionamiento cotidiano, el certificado intermedio hace casi todas las firmas y el certificado raíz casi ninguna, y esa asimetría es toda la razón de existir de esa capa.

No confundir con

Preguntas frecuentes

¿Por qué un sitio carga en mi navegador pero falla en una aplicación o en un script?

Normalmente, por un certificado intermedio que falta. Los navegadores descargan en silencio el certificado ausente mediante la extensión de acceso a la información de la autoridad, mientras que la mayoría de las bibliotecas y de los clientes de línea de comandos no lo hacen, así que el mismo servidor parece de confianza en un lugar y en otro no.

¿Se puede revocar un certificado intermedio?

Sí, y esa es la principal razón de existir de esa capa. La autoridad emisora puede revocar un certificado intermedio de inmediato, mientras que eliminar un certificado raíz comprometido exige una actualización de software en cada dispositivo que trae el almacén de certificados raíz.

Términos relacionados

Más en la sección Referencia para desarrolladores

Leer esta página en inglés