Para las claves ssh firmadas por CA, cómo ver varios atributos: principales, identidad, número de serie, opciones, tiempo de validez, etc.

1

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.

    
pregunta Matt 07.06.2018 - 23:34
fuente

2 respuestas

1

Mis cohortes en Gravitational escribieron una herramienta de golang puro que analiza los certificados SSH y los ejecutan en línea aquí: enlace Si estoy preguntando sobre el análisis de los certificados SSH firmados Creo que esa herramienta generará todos los datos disponibles dentro del certificado.

    
respondido por el Abraham Ingersoll 07.06.2018 - 23:42
fuente
0

Si bien puede usar ssh-keygen -L -f <cert-file> en caso de que tenga un archivo de certificado real en su disco, se necesita lo siguiente si solo tiene un certificado SSH temporal cargado en ssh-agent y no hay un archivo de certificado en disco:

ssh-add -l | ssh-keygen -L

BTW: La confusión con los términos "claves" frente a "certificados" es probablemente porque los certificados OpenSSH se definen como nuevos tipos de claves OpenSSH ([email protected], etc.)

Consulte también la especificación: PROTOCOL.certkeys

    
respondido por el Michael Ströder 17.07.2018 - 12:39
fuente

Lea otras preguntas en las etiquetas