Los certificados de manejo de software habituales (por ejemplo, navegadores web) no se validan en el pasado; cuando consideran un certificado (por ejemplo, para un servidor SSL), quieren saber si el contenido del certificado es confiable ahora . Los "almacenes de certificados" administrados por los sistemas operativos se relacionan con este modelo. Un "anclaje de confianza" (también conocido como "CA raíz") es de confianza o no de confianza. No hay noción de "se fue de confianza".
La validación en el pasado solo tiene sentido en presencia de sellos de tiempo : un documento está firmado, y se aplica una marca de tiempo en la firma (o en la codificación del documento y su firma). La marca de tiempo debe verificarse en la fecha actual (por lo tanto, el certificado TSA debe ser válido now ), pero luego la firma en sí y el certificado del firmante pueden validarse en la fecha de la marca de tiempo. Esto permite verificar firmas incluso mucho después de que los certificados relevantes hayan caducado, aunque requiere que los objetos adicionales como las respuestas CRL u OCSP también tengan la marca de tiempo; Es posible que se deban aplicar sellos de tiempo adicionales a intervalos regulares. Hay algunos estándares emergentes para tal proceso, por ejemplo, PAdES (con el formato "a largo plazo") o ERS (que trata solo de la parte de sellos de tiempo, pero lo hace bien).
En cualquier caso, tales usos necesitan una noción de rangos de tiempo adjunta a los anclajes de confianza. Hay esfuerzos en curso (especialmente en la UE) para definir un formato estándar para eso (llamado TSL ) (la UE hace un gran esfuerzo para no decir que esta es una lista de" CA raíz buena ", pero todo el mundo lo entiende de esa manera). Las fechas de validez se adjuntan a cada CA raíz en esta lista.
Algunos programas que realizan validaciones en el pasado pueden usar directamente el almacén de certificados de "CA raíz de confianza" del SO. De hecho, un "ancla de confianza" es, nominalmente, la combinación de un nombre (un Nombre Distinguido X.500) y una clave pública (consulte RFC 5280 , sección 6.1.1, artículo (d)). Sin embargo, es una práctica generalizada utilizar certificados como formato de codificación para la CA raíz. Dicho certificado incluirá el nombre y la clave pública, pero también otros campos, en particular dos fechas para un rango de validez. Por lo tanto, algunas aplicaciones utilizarán las fechas de la CA raíz como indicativo del intervalo de tiempo durante el cual la CA raíz fue de confianza.
En ese contexto, lo que estás cuidando es factible. De hecho, es suficiente modificar las fechas en el "certificado" de la CA raíz. Primero expórtelo como "DER crudo" (no PEM / Base64). Luego abre un editor binario y cambia las fechas en él; utilizan UTCTime
o GeneralizedTime
, por lo que su representación interna se basa en ASCII. UTCTime
usa el formato YYMMDDhhmmss
(dos dígitos para el año, dos para el mes, etc.); con GeneralizedTime
, las cosas son similares, excepto que hay cuatro dígitos para el año (y puede haber milisegundos). Simplemente cambie los campos de año, mes y día para que se ajusten a sus necesidades. Una vez que se haya modificado el certificado, impórtelo de nuevo en su almacén de confianza y elimine el original. ¡Y voilá! tienes tu CA raíz con fechas modificadas.
Por supuesto, modificar el contenido del certificado de manera que rompa la firma que se ha aplicado en el certificado. Pero esta es una CA raíz: utiliza el formato de codificación de un certificado como una conveniencia, pero esto no es un certificado "real". La firma está allí porque el formato del certificado tiene una ranura no opcional para una firma, pero en realidad nada verifica esa firma. De hecho, el certificado es a menudo autofirmado. Por lo tanto, romper la firma no debería tener importancia.
Repito, sin embargo, que estas fechas solo importan en el contexto de algún software que hace "validación en el pasado", por lo que todo esto depende de lo que realmente haga ese software: los certificados de CA raíz en el almacén de confianza del sistema operativo incorporan la validez fechas (y puede modificarlas "manualmente", como se describe anteriormente), pero el software que realiza validaciones pasadas no necesariamente usa las fechas de estas para administrar los certificados de CA raíz. Bien puede usar otra fuente, por ej. una TSL.