Eu tenho um certificado em der
formato, a partir dele com este comando eu gero uma chave pública:
openssl x509 -inform der -in ejbcacert.cer -noout -pubkey > pub1key.pub
O que resulta nisso:
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7vbqajDw4o6gJy8UtmIbkcpnk
O3Kwc4qsEnSZp/TR+fQi62F79RHWmwKOtFmwteURgLbj7D/WGuNLGOfa/2vse3G2
eHnHl5CB8ruRX9fBl/KgwCVr2JaEuUm66bBQeP5XeBotdR4cvX38uPYivCDdPjJ1
QWPdspTBKcxeFbccDwIDAQAB
-----END PUBLIC KEY-----
Como posso obter uma chave pública como esta? Do certificado ou desta chave pública?
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC7vbqajDw4o6gJy8UtmIbkcpnkO3Kwc4qsEnSZp/TR+fQi62F79RHWmwKOtFmwteURgLbj7D/WGuNLGOfa/2vse3G2eHnHl5CB8ruRX9fBl/KgwCVr2JaEuUm66bBQeP5XeBotdR4cvX38uPYivCDdPjJ1QWPdspTBKcxeFbccDw==
Isso foi obtido com este comando:
ssh-keygen -y -f private_key1.pem > public_key1.pub
ssh-keygen -y -f private_key1.pem > public_key1.pub
funcionou muito bem para mim.ssh-keygen -i -m PKCS8 -f public-key.pem
-m
é diferente para-i
/-e
. Então, meus amigos, por favor , certifique-se de saber o que você quer e o que você tem . :-)Respostas:
Não há necessidade de compilar coisas. Você pode fazer o mesmo com
ssh-keygen
:lerá a chave pública no formato openssl
pub1key.pub
e a produzirá no formato OpenSSH.Nota : Em alguns casos, você precisará especificar o formato de entrada:
Nos documentos ssh-keygen (Do man ssh-keygen):
fonte
-m PKCS8
necessário$ ssh-keygen -f mykey.pub -i
key_from_blob: invalid format
decode blob failed.
Não há necessidade de scripts ou outros 'truques':
openssl
essh-keygen
são suficientes. Estou assumindo que não há senha para as chaves (o que é ruim).Gere um par RSA
Todos os métodos a seguir fornecem um par de chaves RSA no mesmo formato
Com openssl ( man genrsa )
No OpenSSL v1.0.1
genrsa
é substituído porgenpkey
esta é a nova maneira de fazer isso ( man genpkey ):Com ssh-keygen
Convertendo DER em PEM
Se você possui um par de chaves RSA no formato DER, convém convertê-lo para PEM para permitir a conversão de formato abaixo:
Geração:
Conversão:
Extraia a chave pública do par RSA formatado PEM
no formato PEM:
no formato OpenSSH v2, consulte :
Notas
Versão do SO e software:
Referências:
fonte
ssh-rsa
formato? Boa referência, aliás.ssh-keygen -y -f dummy-xxx.pem
produza umssh-rsa AAAA[...]==
ajuste para oauthorized_keys
arquivo ssh .Para responder minha própria pergunta, depois de postar na lista de discussão openssl, recebi o seguinte:
Aqui está o código C para converter de uma chave pública OpenSSL para uma chave pública OpenSSH. Você pode pegar o código neste link e compilá-lo você mesmo:
fonte
fonte
do_convert_from_pkcs8: TEST.pem is not a recognised public key format
openssl genrsa -out newkey.pem 2048
eopenssl rsa -in newkey.pem -outform PEM -pubout -out newkeypublic.pem
fonte
Eu fiz com
O crédito vai aqui
fonte
O script a seguir obteria o certificado de chave pública ci.jenkins-ci.org no formato DER codificado em base64 e o converteria em um arquivo de chave pública OpenSSH. Esse código pressupõe que uma chave RSA de 2048 bits é usada e se baseia muito na resposta de Ian Boyd . Expliquei um pouco mais como ele funciona nos comentários deste artigo no wiki do Jenkins.
fonte
FWIW, esse script BASH utilizará um certificado X.509 no formato PEM ou DER ou um arquivo de chave pública OpenSSL (também no formato PEM) como o primeiro argumento e exibirá uma chave pública OpenSSH RSA. Isso se expande com a resposta de @ mkalkov acima. Os requisitos são
cat
,grep
,tr
,dd
,xxd
,sed
,xargs
,file
,uuidgen
,base64
,openssl
(1.0+), e, é clarobash
. Todos, excetoopenssl
(contémbase64
), são praticamente garantidos como parte da instalação básica em qualquer sistema Linux moderno, exceto talvezxxd
(o que o Fedora mostra novim-common
pacote). Se alguém quiser limpá-lo e torná-lo melhor, faça uma ressalva.fonte