Tengo un certificado en der
formato, 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.pub
funcionó muy bien para mí.ssh-keygen -i -m PKCS8 -f public-key.pem
-m
es 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.pub
y 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 PKCS8
fue necesario$ ssh-keygen -f mykey.pub -i
key_from_blob: invalid format
decode blob failed.
No hay necesidad de guiones u otros 'trucos':
openssl
yssh-keygen
son 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
genrsa
se reemplaza porgenpkey
lo 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-rsa
formato? Buena referencia, por cierto.ssh-keygen -y -f dummy-xxx.pem
produce unssh-rsa AAAA[...]==
ajuste para elauthorized_keys
archivo 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 format
openssl genrsa -out newkey.pem 2048
yopenssl rsa -in newkey.pem -outform PEM -pubout -out newkeypublic.pem
fuente
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-common
paquete). Si alguien quiere limpiarlo y hacerlo más agradable, advierta lector.fuente