Estoy buscando implementar controles de acceso a través de claves ssh públicas firmadas por CA, como se describe en el artículo Acceso escalable y seguro con SSH .
Estoy tratando de concebir cómo nuestro equipo de seguridad manejará esto en el lado de CA. Una cosa que me gustaría poder hacer es, después de firmar una clave, me gustaría "consultar" esa clave para obtener información al respecto. En particular, para una clave dada, me gustaría saber:
- ¿Con qué CA se firmó (es decir, puedo extraer alguna información sobre el certificado utilizado para firmar esta clave)?
- La identidad se ha asignado a esta clave (
-I
flag to ssh-keygen) - ¿Qué principal (s) están permitidos por esta clave (
-n
ssh-keygen flag) - ¿Cuál es el tiempo de validez de la firma (
-V
) - ¿Cuál es el número de serie de esta firma (
-z
) - ¿Qué opciones se han asignado a esta clave firmada (
-O
)
Claramente, sshd necesariamente necesita decodificar todos esos atributos cuando se presenta la clave. ¿Hay una manera programática de extraer esa información? Estoy pensando en términos de controles de validez, auditorías e informes sobre el lado de la administración del equipo de seguridad.
Editar: Me di cuenta de que estaba usando una terminología incorrecta en esta publicación. Desde la página de manual de ssh-keygen (énfasis mío):
ssh-keygen admite la firma de claves para producir certificados que pueden ser utilizado para la autenticación de usuario o host. Los certificados consisten en un público clave , alguna información de identidad, cero o más principal (usuario o host) nombres y un conjunto de opciones ...
Como mencionó Abraham a continuación, las claves son, de hecho, solo claves. Una vez que una CA ha firmado una clave, ya no es solo una clave, sino un certificado .
Por último, en una impresionante pantalla de RTFM Fail , ssh-keygen -L -f certificate
hace exactamente lo que necesito.