Bagaimana cara mengekstrak kunci publik menggunakan OpenSSL?

120

Perintah berikut menghasilkan file yang berisi kunci publik dan pribadi:

openssl genrsa -des3 -out privkey.pem 2048

Sumber: di sini

Dengan OpenSSL, kunci privat juga berisi informasi kunci publik, sehingga kunci publik tidak perlu dibuat secara terpisah

Bagaimana cara mengekstrak kunci publik dari file privkey.pem?

Terima kasih.

Jake
sumber
Alat online ini keren 8gwifi.org/pempublic.jsp
anish

Jawaban:

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

Itu menulis kunci publik ke key.pub

stewe
sumber
23
Selalu lebih baik gunakan opsi internal untuk melakukan ini :, -outmisalnya: openssl rsa -in privkey.pem -pubout -out key.pubdaripada mengalihkan stdout ke file.
Juan Antonio
138

Meskipun, teknik di atas berfungsi untuk kasus umum, itu tidak berfungsi pada file PEM Amazon Web Services (AWS).

Saya menemukan di dokumen AWS perintah berikut berfungsi: ssh-keygen -y

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

edit Terima kasih @makenova untuk baris lengkapnya:

ssh-keygen -y -f key.pem > key.pub
lababidi
sumber
38
Terima kasih. Ini keinginan yang kubutuhkan. Untuk melewati petunjuknya, Anda dapat menggunakanssh-keygen -y -f key.pem > key.pub
makenova
5
Ini adalah jawaban yang benarssh-keygen -y -f key.pem
Justin
1
ini menanyakan frasa sandi, tapi saya tidak memasukkan frasa sandi
kavain
1
@makenova Ini akan menumbuhkan kunci dalam key.pem, yang dapat mencegah Anda dari penebangan ke kasus yang membutuhkan kunci itu!
SubmittedDenied
Jika Anda mendapatkan masalah yang sama dengan @kavain yang menanyakan frasa sandi yang tidak Anda masukkan, dan Anda menggunakan kunci dengan ssh -i, pastikan Anda menautkan ke kunci pribadi Anda di sana, bukan yang publik
aexl
5

Bagi mereka yang tertarik dengan detailnya - Anda dapat melihat apa yang ada di dalam file kunci publik (dibuat seperti dijelaskan di atas), dengan melakukan ini: -

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

atau untuk file kunci pribadi, ini: -

openssl rsa -noout -text -in key.private

yang menghasilkan teks di konsol komponen kunci yang sebenarnya (modulus, eksponen, bilangan prima, ...)

cnd
sumber
2

Jika Anda mencari cara menyalin Amazon AWS .pem ke wilayah lain, lakukan hal berikut:

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

Kemudian

aws ec2 import-key-pair --key-name amazon-aws --public-key-material '$(cat .ssh/amazon-aws.pub)' --region us-west-2
Justin
sumber
2
Keluaran kunci publik oleh openssldiapit dalam tajuk PEM, yang harus Anda hapus sebelum AWS CLI menerima kuncinya.
JP
2

Untuk AWS mengimpor kunci publik yang sudah ada,

  1. Ekspor dari .pem melakukan ini ... (di linux)

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

Ini akan menghasilkan file yang jika Anda buka di editor teks terlihat seperti ini ...

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn/8y3uYCQxSXZ58OYceG
A4uPdGHZXDYOQR11xcHTrH13jJEzdkYZG8irtyG+m3Jb6f9F8WkmTZxl+4YtkJdN
9WyrKhxq4Vbt42BthadX3Ty/pKkJ81Qn8KjxWoL+SMaCGFzRlfWsFju9Q5C7+aTj
eEKyFujH5bUTGX87nULRfg67tmtxBlT8WWWtFe2O/wedBTGGQxXMpwh4ObjLl3Qh
bfwxlBbh2N4471TyrErv04lbNecGaQqYxGrY8Ot3l2V2fXCzghAQg26Hc4dR2wyA
PPgWq78db+gU3QsePeo2Ki5sonkcyQQQlCkL35Asbv8khvk90gist4kijPnVBCuv
cwIDAQAB
-----END PUBLIC KEY-----
  1. Namun AWS TIDAK akan menerima file ini.

    Anda harus menghapus -----BEGIN PUBLIC KEY-----dan -----END PUBLIC KEY-----dari file. Simpan dan impor dan seharusnya berfungsi di AWS.

Bendo
sumber
4
dan jika Anda perlu mengubah format ini untuk ssh-rsa AAAAB3NzaC1y....menjalankan:ssh-keygen -f PublicKey.pub -i -mPKCS8
Rafael Milewski