Saya memiliki sertifikat dalam der
format, darinya dengan perintah ini saya menghasilkan kunci publik:
openssl x509 -inform der -in ejbcacert.cer -noout -pubkey > pub1key.pub
Yang menghasilkan ini:
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7vbqajDw4o6gJy8UtmIbkcpnk
O3Kwc4qsEnSZp/TR+fQi62F79RHWmwKOtFmwteURgLbj7D/WGuNLGOfa/2vse3G2
eHnHl5CB8ruRX9fBl/KgwCVr2JaEuUm66bBQeP5XeBotdR4cvX38uPYivCDdPjJ1
QWPdspTBKcxeFbccDwIDAQAB
-----END PUBLIC KEY-----
Bagaimana saya bisa mendapatkan kunci publik seperti ini? Baik dari sertifikat atau dari kunci publik ini?
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC7vbqajDw4o6gJy8UtmIbkcpnkO3Kwc4qsEnSZp/TR+fQi62F79RHWmwKOtFmwteURgLbj7D/WGuNLGOfa/2vse3G2eHnHl5CB8ruRX9fBl/KgwCVr2JaEuUm66bBQeP5XeBotdR4cvX38uPYivCDdPjJ1QWPdspTBKcxeFbccDw==
Ini diperoleh dengan perintah ini:
ssh-keygen -y -f private_key1.pem > public_key1.pub
ssh-keygen -y -f private_key1.pem > public_key1.pub
bekerja dengan baik untuk saya.ssh-keygen -i -m PKCS8 -f public-key.pem
-m
berbeda untuk-i
/-e
. Jadi teman-teman saya, pastikan Anda tahu apa yang Anda inginkan dan apa yang Anda miliki . :-)Jawaban:
Tidak perlu mengkompilasi barang. Anda dapat melakukan hal yang sama dengan
ssh-keygen
:akan membaca kunci publik dalam format openssl dari
pub1key.pub
dan mengeluarkannya dalam format OpenSSH.Catatan : Dalam beberapa kasus, Anda perlu menentukan format input:
Dari dokumen ssh-keygen (Dari man ssh-keygen):
sumber
-m PKCS8
itu perlu$ ssh-keygen -f mykey.pub -i
key_from_blob: invalid format
decode blob failed.
Tidak perlu skrip atau 'trik' lain:
openssl
danssh-keygen
sudah cukup. Saya mengasumsikan tidak ada kata sandi untuk kunci (yang buruk).Buat pasangan RSA
Semua metode berikut memberikan pasangan kunci RSA dalam format yang sama
Dengan openssl ( man genrsa )
Dalam OpenSSL v1.0.1
genrsa
digantikan olehgenpkey
jadi ini adalah cara baru untuk melakukannya ( man genpkey ):Dengan ssh-keygen
Mengubah DER menjadi PEM
Jika Anda memiliki pasangan kunci RSA dalam format DER, Anda mungkin ingin mengubahnya menjadi PEM untuk memungkinkan konversi format di bawah ini:
Generasi:
Konversi:
Ekstrak kunci publik dari pasangan RSA yang diformat PEM
dalam format PEM:
dalam format OpenSSH v2 lihat :
Catatan
Versi OS dan perangkat lunak:
Referensi:
sumber
ssh-rsa
format? Referensi yang bagus, btw.ssh-keygen -y -f dummy-xxx.pem
menghasilkanssh-rsa AAAA[...]==
kecocokan untukauthorized_keys
file ssh .Untuk menjawab pertanyaan saya sendiri, setelah memposting di milis openssl, dapatkan ini:
Berikut adalah kode C untuk mengkonversi dari kunci publik OpenSSL ke kunci publik OpenSSH. Anda dapat mengambil kode dari tautan ini dan mengompilasinya sendiri:
sumber
sumber
do_convert_from_pkcs8: TEST.pem is not a recognised public key format
openssl genrsa -out newkey.pem 2048
danopenssl rsa -in newkey.pem -outform PEM -pubout -out newkeypublic.pem
sumber
Saya lakukan dengan
Kredit di sini
sumber
Skrip berikut akan mendapatkan sertifikat kunci publik ci.jenkins-ci.org dalam format DER yang disandikan base64 dan mengubahnya menjadi file kunci publik OpenSSH. Kode ini mengasumsikan bahwa kunci RSA 2048-bit digunakan dan menarik banyak dari jawaban Ian Boyd ini . Saya telah menjelaskan sedikit lebih banyak tentang cara kerjanya di komentar pada artikel ini di Jenkins wiki.
sumber
FWIW, skrip BASH ini akan mengambil sertifikat X.509 format PEM-atau DER atau file kunci publik OpenSSL (juga format PEM) sebagai argumen pertama dan mencabut kunci publik OpenSSH RSA. Ini berkembang atas jawaban @ mkalkov di atas. Persyaratan adalah
cat
,grep
,tr
,dd
,xxd
,sed
,xargs
,file
,uuidgen
,base64
,openssl
(1.0+), dan tentu sajabash
. Semua kecualiopenssl
(berisibase64
) dijamin cukup banyak untuk menjadi bagian dari instalasi dasar pada sistem Linux modern apa pun, kecuali mungkinxxd
(yang ditunjukkan Fedora dalamvim-common
paket). Jika ada yang ingin membersihkannya dan membuatnya lebih bagus, peringatan lector.sumber