¿Cómo extraer la clave pública usando OpenSSL?


120

El siguiente comando genera un archivo que contiene tanto la clave pública como la privada:

openssl genrsa -des3 -out privkey.pem 2048

Fuente: aquí

Con OpenSSL, la clave privada también contiene la información de la clave pública, por lo que no es necesario generar una clave pública por separado.

¿Cómo podemos extraer la clave pública del archivo privkey.pem?

Gracias.


Esta herramienta en línea es genial 8gwifi.org/pempublic.jsp
anish

Respuestas:


188
openssl rsa -in privkey.pem -pubout > key.pub

Que escribe la clave pública para key.pub


23
Siempre es mejor usar la opción interna para hacer esto:, -outpor ejemplo: en openssl rsa -in privkey.pem -pubout -out key.publugar de redirigir stdout a un archivo.
Juan Antonio

138

Sin embargo, la técnica anterior funciona para el caso general, no funcionó en archivos PEM de Amazon Web Services (AWS).

Encontré en los documentos de AWS el siguiente comando funciona: ssh-keygen -y

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html

editar Gracias @makenova por la línea completa:

ssh-keygen -y -f key.pem > key.pub

38
Gracias. Este es el deseo que necesitaba. Para omitir las indicaciones, puede usarssh-keygen -y -f key.pem > key.pub
makenova

5
Esta es la respuesta correctassh-keygen -y -f key.pem
Justin

1
Esto me está pidiendo una frase de contraseña, pero no puse ninguna frase de contraseña
kavain

1
@makenova ¡Esto regenerará la clave key.pem, lo que podría evitar que inicie sesión en instancias que requieran esa clave!
Enviado

Si tienes el mismo problema que @kavain, donde te pide la frase de contraseña que no pusiste, y estás usando tu clave ssh -i, asegúrate de estar enlazando a tu clave privada allí, no a la pública
aexl

5

Para aquellos interesados ​​en los detalles, pueden ver qué hay dentro del archivo de clave pública (generado como se explicó anteriormente), haciendo esto: -

openssl rsa -noout -text -inform PEM -in key.pub -pubin

o para el archivo de clave privada, esto: -

openssl rsa -noout -text -in key.private

que genera como texto en la consola los componentes reales de la clave (módulo, exponentes, primos, ...)


2

Si busca cómo copiar un .pempar de claves de Amazon AWS en una región diferente, haga lo siguiente:

openssl rsa -in .ssh/amazon-aws.pem -pubout > .ssh/amazon-aws.pub

Luego

aws ec2 import-key-pair --key-name amazon-aws --public-key-material '$(cat .ssh/amazon-aws.pub)' --region us-west-2

2
La salida de la clave pública de opensslse intercala en los encabezados PEM, que deberá eliminar antes de que la AWS CLI acepte la clave.
JP

2

Para AWS que importa una clave pública existente,

  1. Exportar desde el .pem haciendo esto ... (en linux)

    openssl rsa -in ./AWSGeneratedKey.pem -pubout -out PublicKey.pub
    

Esto producirá un archivo que si abre en un editor de texto con un aspecto como este ...

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn/8y3uYCQxSXZ58OYceG
A4uPdGHZXDYOQR11xcHTrH13jJEzdkYZG8irtyG+m3Jb6f9F8WkmTZxl+4YtkJdN
9WyrKhxq4Vbt42BthadX3Ty/pKkJ81Qn8KjxWoL+SMaCGFzRlfWsFju9Q5C7+aTj
eEKyFujH5bUTGX87nULRfg67tmtxBlT8WWWtFe2O/wedBTGGQxXMpwh4ObjLl3Qh
bfwxlBbh2N4471TyrErv04lbNecGaQqYxGrY8Ot3l2V2fXCzghAQg26Hc4dR2wyA
PPgWq78db+gU3QsePeo2Ki5sonkcyQQQlCkL35Asbv8khvk90gist4kijPnVBCuv
cwIDAQAB
-----END PUBLIC KEY-----
  1. Sin embargo, AWS NO aceptará este archivo.

    Tienes que quitar el -----BEGIN PUBLIC KEY-----y -----END PUBLIC KEY-----del archivo. Guárdelo e importe y debería funcionar en AWS.


4
y si necesita convertir este formato para ssh-rsa AAAAB3NzaC1y....ejecutar:ssh-keygen -f PublicKey.pub -i -mPKCS8
Rafael Milewski
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.