Saya mengalami masalah menghasilkan kunci publik yang PEM_read_bio_RSA_PUBKEY()
dapat mengkonsumsi fungsi openssl . Saya terus mendapatkan kesalahan.
Jelas saya tidak bisa hanya menggunakan string ASCII dalam ssh-keygen <>.pub
file kunci seperti dalam format file SSH atau saya mungkin SubjectPublicKeyInfo
struktur.
Berikut kode gen kunci: ssh-keygen -t rsa -b 1024 -C "Test Key"
Saya menemukan konverter di php di web yang akan mengubah isi kunci publik menjadi format string PEM ASCII base64. Namun fungsinya masih tidak menyukainya.
Dokumentasi Opensl menyatakan:
- “Fungsi RSA_PUBKEY () yang memproses kunci publik menggunakan struktur EVP_PKEY”
- “Fungsi RSA_PUBKEY juga memproses kunci publik RSA menggunakan struktur RSA”
Bagaimana cara mendapatkan kunci publik OpenSSH saya ke dalam salah satu format yang akan dikonsumsi fungsi OpenSSL?
Jawaban:
BAIK!
Jadi saya masuk ke pemikiran ini, "Mudah, saya dapat ini." Ternyata ada jauh lebih banyak daripada yang saya pikir.
Jadi masalah pertama adalah bahwa (menurut halaman manual untuk OpenSSL (man 3 pem)), OpenSSL mengharapkan kunci RSA berada dalam format PKCS # 1. Jelas ini bukan yang bekerja dengan ssh-keygen. Anda memiliki dua opsi (dari mencari di sekitar).
Jika Anda memiliki OpenSSH v. 5.6 atau lebih baru (saya tidak menggunakan laptop saya), Anda dapat menjalankan ini:
Metode yang lebih lama untuk melakukan ini adalah memecah kunci SSH Anda menjadi berbagai komponen ( entri blog saya menemukan beberapa di antaranya menuduh OpenSSH sebagai "berpemilik", saya lebih suka menyebutnya "unik") dan kemudian menggunakan perpustakaan ASN1 untuk bertukar hal di sekitar.
Untungnya bagi Anda, seseorang menulis kode untuk melakukan ini:
https://gist.github.com/1024558
sumber
ssh-keygen
Metode tampaknya bekerja pada Linux tapi tidak OS X. Macssh -V
.OpenSSH_6.2p2
. Apakah berhasilOpenSSH_6.6p1
.-m
tidak bekerja untuk saya ... apa yang bekerja di sekitar?Dengan asumsi Anda memiliki kunci pribadi SSH
id_rsa
, Anda dapat mengekstrak kunci publik dari itu seperti:Saya menyadari OP bertanya tentang mengonversi kunci publik, jadi ini tidak cukup menjawab pertanyaan, namun saya pikir itu akan berguna bagi beberapa orang.
Perhatikan juga bahwa perintah ini menghasilkan format kunci publik PEM, yang umumnya diharapkan OpenSSL. Jawaban oleh Brian, di sisi lain, menghasilkan file dalam format RSAPublicKey, yang bukan format normal yang diharapkan oleh OpenSSL (meskipun versi kemudian dapat membacanya melalui
-RSAPublicKey_in
flag). Untuk mengkonversi Anda dapat melakukan ini:sumber
openssl rsa -in id_rsa.pem -pubout -out id_rsa.pub.pem
juga berfungsi (yaitu input adalah format privat pem format). Jawaban yang bagus.-m pkcs8
yang terlepas dari OpenSSH orang menggunakan nama yang salah tidak menghasilkan X.509 'Kunci Publik'. Juga, sejak OpenSSH 6.5 pada 2014-01 jika pembuatnya menetapkan 'format baru'-o
untuk keamanan yang lebih baik, metode ini tidak akan berfungsi, dan karena 7,8 pada 2018-08 'format baru' sekarang menjadi standar, ditto.Format yang Anda inginkan adalah
ssh-keygen
panggilan apaPKCS8
. Jadi perintah berikut akan menghasilkan output yang diinginkan:Dari
ssh-keygen
halaman manual:sumber
Mirip dengan metode Amal Chaudhuri di bawah ini, inilah yang berhasil bagi saya. Saya perlu membuat file pem dari kunci publik ssh yang saya buat untuk klien SFTP saya (Cyberduck).
sumber
id_rsa
sudah dalam format yang tepat, Anda bisa memeriksanya sendiri, hasilnyaid_rsa.pem
100% identik.Cara lain untuk melakukan ini dari situs lain. Posting ini jika Anda memerlukan metode lain. Bekerja dengan sangat baik. http://www.chatur.com.np/2011/01/convert-openssh-rsa-key-to-pem-format.html
sumber
id_rsa
bukan kunci publik. Jawaban yang salah.