Glosario / Referencia para desarrolladores
Certificado X.509
También se conoce como Certificados X509.
- ¿Qué es un certificado X.509?
- Un certificado X.509 es un archivo firmado que asocia una clave pública a un nombre y un período de validez, y es el formato que sustenta cada conexión HTTPS que usted establece con un exchange.
El formato es antiguo y se nota: X.509 apareció en 1988 como parte de un estándar de directorio, y el perfil para internet que sigue en uso, RFC 5280, data de mayo de 2008. Un certificado es un registro estructurado firmado por un emisor, no un secreto, así que puede entregarse sin riesgo. Lo que demuestra es limitado: alguien convenció a una autoridad de que controlaba un nombre.
Cómo funciona
Un certificado es una lista de campos más una firma que los cubre a todos.
Los campos que importan a un lector son pocos. Un número de serie identifica el certificado ante su emisor. El campo del emisor indica quién lo firmó, el campo del sujeto indica de quién trata y dos marcas de tiempo delimitan la ventana en la que es válido. Un bloque de información de la clave pública del sujeto contiene la propia clave. Las extensiones llevan el resto, y una de ellas hace la mayor parte del trabajo: la extensión subjectAltName enumera los nombres de dominio que cubre el certificado.
El campo del nombre común es la trampa clásica. Parece el lugar donde se guarda un dominio, y durante años lo fue, pero RFC 6125 marcó como obsoleta su lectura en marzo de 2011 y los navegadores ahora lo ignoran. Un certificado cuya subjectAltName no enumera el sitio que se visita falla, diga lo que diga su nombre común.
La vida útil de los certificados se ha desplomado en la última década. Los certificados TLS de confianza pública emitidos a partir del 1 de septiembre de 2020 no pueden tener una validez superior a 398 días, cuando antes eran tres años y después dos, y Let's Encrypt emite certificados de 90 días de forma rutinaria porque la renovación está automatizada. Una ventana corta es un sustituto de la revocación, que nunca ha funcionado de forma fiable.
Cualquiera puede crear uno. Firmar un certificado con la propia clave produce un certificado autofirmado, en el que el emisor y el sujeto son idénticos, y es un archivo perfectamente válido que ningún almacén de certificados reconoce. Una firma no es lo que hace fiable a un certificado; lo es la identidad del firmante.
Dónde aparece
Haga clic en el candado de cualquier navegador y estará viendo un certificado X.509.
El mismo formato de archivo aparece dondequiera que el software deba comprobar que algo procede de un proveedor concreto: binarios de aplicaciones firmados, actualizaciones de firmware firmadas y los certificados de atestación que llevan algunas billeteras de hardware para que la aplicación de un fabricante pueda distinguir un dispositivo genuino de un clon. BIP70 incorporó certificados directamente en las solicitudes de pago de bitcoin, la única vez que el formato ha formado parte de un protocolo de bitcoin.
Dos hábitos protegen aquí a un comprador. Nunca haga clic para continuar ante una advertencia de certificado en un sitio que mantiene dinero, porque el navegador está informando de que el nombre y la clave no coinciden, y en el dominio de un exchange eso no tiene ninguna versión inofensiva. Y recuerde que un certificado válido en un sitio fraudulento es algo normal, no una contradicción: la verificación cubre el nombre, así que si el nombre casi coincide con el verdadero, el certificado está cumpliendo su función mientras usted pierde sus fondos.
Certificado X.509 frente a certificado de hoja
X.509 es un formato; hoja describe una posición. Todo certificado de una cadena de certificados es un certificado X.509, incluidos los intermedios y el certificado raíz autofirmado, y llamar hoja a uno de ellos solo indica que está al final: identifica un servidor real en lugar de autorizar nuevas emisiones. La diferencia se ve en una sola extensión, ya que un certificado cuya extensión basicConstraints lo marca como autoridad puede firmar otros y un certificado de hoja no.