Saltar al contenido

Extraiga la clave pública / privada del archivo PKCS12 para su uso posterior en la autenticación SSH-PK

Solución:

Puede utilizar los siguientes comandos para extraer la clave pública / privada de un contenedor PKCS # 12:

  • PKCS # 1 Clave privada

    openssl pkcs12 -in yourP12File.pfx -nocerts -out privateKey.pem
    
  • Certificados:

    openssl pkcs12 -in yourP12File.pfx -clcerts -nokeys -out publicCert.pem
    

Esto es posible con un poco de conversión de formato.

Para extraer la clave privada en un formato, openssh puede usar:

openssl pkcs12 -in pkcs12.pfx -nocerts -nodes | openssl rsa > id_rsa

Para convertir la clave privada en una clave pública:

openssl rsa -in id_rsa -pubout | ssh-keygen -f /dev/stdin -i -m PKCS8

Para extraer la clave pública en un formato, openssh puede usar:

openssl pkcs12 -in pkcs12.pfx -clcerts -nokeys | openssl x509 -pubkey -noout | ssh-keygen -f /dev/stdin -i -m PKCS8

OpenSSH no puede usar archivos PKCS # 12 listos para usar. Como sugirieron otros, 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í. Utilizo 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 será utilizada directamente por OpenSSH:

openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts | openssl rsa > ~/.ssh/id_rsa

Sugiero encarecidamente cifrar la clave privada con contraseña:

openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts | openssl rsa -passout 'pass:Passw0rd!' > ~/.ssh/id_rsa

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í. Los diferentes caparazones tienen diferentes formas. Puede prefijar 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:

history -d $(history | tail -n 2 | awk 'NR == 1 { print $1 }')

Alternativamente, puede usar una forma diferente de pasar una contraseña de clave privada a OpenSSL; consulte la documentación de OpenSSL para obtener argumentos de frase de contraseña.

Luego, cree una clave pública OpenSSH que se puede agregar al archivo Authorized_keys:

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *