Quiero extraer la clave pública y privada de mi PKCS#12
archivo para su uso posterior en SSH-Public-Key-Authentication.
En este momento, estoy generando claves a través de ssh-keygen que puse .ssh/authorized_key
, respectivamente, en algún lugar del lado del cliente.
En el futuro, quiero usar las claves de un PKCS#12
contenedor, así que primero tengo que extraer la clave pública PKCS#12
y luego ponerla en el .ssh/authorized_keys
archivo. ¿Hay alguna posibilidad de que esto funcione openssl
? ¿Son PKCS#12
compatibles las claves para la autenticación de clave pública ssh?
openssl rsa -in privateKey.pem -out private.pem
-passout pass:
. Espera que el parámetro esté en el formulario pass: mypassword. stackoverflow.com/a/27497899/206277-nodes
exporta la clave correctamenteEsto es posible con un poco de conversión de formato.
Para extraer la clave privada en un formato, openssh puede usar:
Para convertir la clave privada en una clave pública:
Para extraer la clave pública en un formato, openssh puede usar:
fuente
OpenSSH no puede usar archivos PKCS # 12 listos para usar. Como otros sugirieron, debe extraer la clave privada en formato PEM que lo lleva de la tierra de OpenSSL a OpenSSH. Otras soluciones mencionadas aquí no funcionan para mí. Uso OS X 10.9 Mavericks (10.9.3 en este momento) con utilidades "preempaquetadas" (OpenSSL 0.9.8y, OpenSSH 6.2p2).
Primero, extraiga una clave privada en formato PEM que OpenSSH utilizará directamente:
Sugiero encriptar la clave privada con contraseña:
Obviamente, escribir una contraseña de texto sin formato en la línea de comandos tampoco es seguro, por lo que debe eliminar el último comando del historial o simplemente asegurarse de que no llegue allí. Las diferentes conchas tienen diferentes formas. Puede anteponer su comando con espacio para evitar que se guarde en el historial en Bash y muchos otros shells. Aquí también se explica cómo eliminar el comando del historial en Bash:
Alternativamente, puede usar una forma diferente de pasar una contraseña de clave privada a OpenSSL; consulte la documentación de OpenSSL para ver los argumentos de las frases de paso .
Luego, cree una clave pública OpenSSH que se pueda agregar al archivo autorizado_claves:
fuente
| openssl rsa
cosas?~/.ssh/id_rsa
) con algunos "cruft" como Bag Attributes sin `| openssl rsa`. Supongo que OpenSSH y otras utilidades que usan un archivo de identidad pueden manejar ese problema (no lo he probado), pero simplemente estoy acostumbrado a proporcionar solo los datos necesarios y nada más, especialmente si se trata de seguridad.openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts
Solución 1:
Extraer P12 de jks
Extraiga PEM de P12 y edite el archivo y pem del archivo crt
Extraer clave de jks
Solución 2:
Extraer PEM y encriptadoPrivateKey al archivo txt ''
Descifrar privateKey
fuente
echo hello
.Actualización: Noté que mi respuesta era solo un pobre duplicado de una pregunta bien explicada en https: //unix.stackexchange.com / ... por BryKKan
Aquí hay un extracto de ella:
fuente
Hasta donde sé, PKCS # 12 es solo un almacén de claves de certificado / público / privado. Si extrajo una clave pública del archivo PKCS # 12, OpenSSH debería poder usarla siempre que se extrajera en formato PEM . Probablemente ya sepa que también necesita una clave privada correspondiente (también en PEM ) para usarla para la autenticación de clave pública ssh.
fuente
La respuesta aceptada es el comando correcto, solo quiero agregar una cosa adicional, cuando extraiga la clave si deja la contraseña PEM (
"Enter PEM pass phrase:"
) en blanco, no se extraerá la clave completa, sino solo lalocalKeyID
extraída. Para obtener la clave completa, debe especificar una contraseña PEM cuando ejecute el siguiente comando.Tenga en cuenta que cuando se trata de Importar contraseña, puede especificar la contraseña real
"Enter Import Password:"
o puede dejar esta contraseña en blanco:fuente