No me refiero simplemente a poner la clave RSA pública de un certificado x.509 en ~/.ssh/authorized_keys
. Estoy buscando una manera de configurar un ssh tal que los certificados x.509 firmados por una CA predefinida Se le otorgará automáticamente acceso a la cuenta de usuario vinculada. RFC 6187 parece sugerir tal funcionalidad, pero no puedo encontrar ninguna documentación sobre esto, o si está implementado en OpenSSH en absoluto.
Aquí hay una descripción más detallada de lo que quiero hacer:
- Se ha configurado una CA ("SSH-CA")
- Esta CA se utiliza para firmar certificados de usuario con
keyUsage=digitalSignature
(y quizás el campoid-kp-secureShellClient
extendedKeyUsage) - Este certificado ahora se puede utilizar para iniciar sesión en un servidor. El servidor no requiere que la clave pública esté presente en el
authorized_keys
. En su lugar, está configurado para confiar en el SSH-CA para verificar la clave pública y la firma del certificado (o cadena de certificados) y el nombre de usuario / UID (probablemente directamente en el camposubjectAltName
, o tal vez utilizando algún mapeo del lado del servidor) ) antes de que se realice la autenticación RSA habitual
Entonces, (cómo) se puede lograr esto con OpenSSH, y si requiere un parche, ¿cómo se pueden mantener mínimas las modificaciones del lado del cliente?
Como alternativa, supongo que también se podría usar cualquier certificado S / MIME más un nombre de usuario para la asignación de direcciones de correo electrónico, sin necesidad de una CA. El cliente también podría usar solo la clave RSA privada y se usa un servidor de certificados para obtener un certificado de una clave pública, además de ofrecer la posibilidad de usar certificados PGP (por ejemplo, a través de monkeysphere ) sin que el usuario requiera ningún conocimiento sobre todo esto siempre y cuando simplemente proporcione una clave pública.
Si no es posible de forma nativa, supongo que podría crear una "implementación" semiautomática de esto permitiendo que un script en el servidor verifique automáticamente un certificado enviado de otra manera a través de openssl
(o gnupg
) y haga que la clave pública se coloque en el archivo authorized_keys
del usuario respectivo, aunque en ese momento yo am probablemente esté más o menos haciendo el monkeyshere project ...