Tengo un certificado en derformato, a partir de él con este comando genero una clave pública:
openssl x509 -inform der -in ejbcacert.cer -noout -pubkey > pub1key.pub
Lo que resulta en esto:
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7vbqajDw4o6gJy8UtmIbkcpnk
O3Kwc4qsEnSZp/TR+fQi62F79RHWmwKOtFmwteURgLbj7D/WGuNLGOfa/2vse3G2
eHnHl5CB8ruRX9fBl/KgwCVr2JaEuUm66bBQeP5XeBotdR4cvX38uPYivCDdPjJ1
QWPdspTBKcxeFbccDwIDAQAB
-----END PUBLIC KEY-----
¿Cómo puedo obtener una clave pública como esta? ¿Ya sea del certificado o de esta clave pública?
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC7vbqajDw4o6gJy8UtmIbkcpnkO3Kwc4qsEnSZp/TR+fQi62F79RHWmwKOtFmwteURgLbj7D/WGuNLGOfa/2vse3G2eHnHl5CB8ruRX9fBl/KgwCVr2JaEuUm66bBQeP5XeBotdR4cvX38uPYivCDdPjJ1QWPdspTBKcxeFbccDw==
Esto se obtuvo con este comando:
ssh-keygen -y -f private_key1.pem > public_key1.pub

ssh-keygen -y -f private_key1.pem > public_key1.pubfuncionó muy bien para mí.ssh-keygen -i -m PKCS8 -f public-key.pem-mes diferente para-i/-e. Entonces, mis amigos, asegúrese de saber lo que quiere y lo que tiene . :-)Respuestas:
No es necesario compilar cosas. Puedes hacer lo mismo con
ssh-keygen:leerá la clave pública en formato openssl
pub1key.puby la generará en formato OpenSSH.Nota : En algunos casos, deberá especificar el formato de entrada:
De los documentos ssh-keygen (De man ssh-keygen):
fuente
-m PKCS8fue necesario$ ssh-keygen -f mykey.pub -ikey_from_blob: invalid formatdecode blob failed.No hay necesidad de guiones u otros 'trucos':
opensslyssh-keygenson suficientes. Supongo que no hay contraseña para las claves (lo cual es malo).Generar un par RSA
Todos los siguientes métodos dan un par de claves RSA en el mismo formato
Con openssl ( hombre genrsa )
En OpenSSL v1.0.1
genrsase reemplaza porgenpkeylo que esta es la nueva forma de hacerlo ( man genpkey ):Con ssh-keygen
Convertir DER a PEM
Si tiene un par de claves RSA en formato DER, puede convertirlo a PEM para permitir la conversión de formato a continuación:
Generacion:
Conversión:
Extraiga la clave pública del par RSA con formato PEM
en formato PEM:
en formato OpenSSH v2 ver :
Notas
Sistema operativo y versión de software:
Referencias
fuente
ssh-rsaformato? Buena referencia, por cierto.ssh-keygen -y -f dummy-xxx.pemproduce unssh-rsa AAAA[...]==ajuste para elauthorized_keysarchivo ssh .Para responder a mi propia pregunta, después de publicar en la lista de correo openssl obtuve esto:
Aquí hay un código C para convertir de una clave pública OpenSSL a una clave pública OpenSSH. Puede obtener el código de este enlace y compilarlo usted mismo:
fuente
fuente
do_convert_from_pkcs8: TEST.pem is not a recognised public key formatopenssl genrsa -out newkey.pem 2048yopenssl rsa -in newkey.pem -outform PEM -pubout -out newkeypublic.pemfuente
Hice con
El crédito va aquí
fuente
El siguiente script obtendría el certificado de clave pública ci.jenkins-ci.org en formato DER codificado en base64 y lo convertiría en un archivo de clave pública OpenSSH. Este código supone que se usa una clave RSA de 2048 bits y se basa mucho en la respuesta de Ian Boyd . He explicado un poco más cómo funciona en los comentarios a este artículo en la wiki de Jenkins.
fuente
FWIW, este script BASH tomará un certificado X.509 en formato PEM o DER o un archivo de clave pública OpenSSL (también formato PEM) como primer argumento y arrojará una clave pública OpenSSH RSA. Esto se expande sobre la respuesta de @ mkalkov anterior. Los requisitos son
cat,grep,tr,dd,xxd,sed,xargs,file,uuidgen,base64,openssl(1.0+), y por supuestobash. Todos, exceptoopenssl(contienebase64), están casi garantizados como parte de la instalación base en cualquier sistema Linux moderno, excepto tal vezxxd(que Fedora muestra en elvim-commonpaquete). Si alguien quiere limpiarlo y hacerlo más agradable, advierta lector.fuente