Konversi .pem menjadi .crt dan .key

Jawaban:

502

Saya dapat mengubah pem ke crt menggunakan ini:

openssl x509 -outform der -in your-cert.pem -out your-cert.crt
CB
sumber
13
Menggunakan editor teks bukan pendekatan terbaik. Untuk mengekstrak kunci dalam bentuk PKCS8: openssl pkey -in mumble.pem -out mumble-key.pem Jika versi OpenSSL lebih tua dari 1.0.0, untuk mengekstrak kunci sebagai kunci RSA:openssl rsa -in mumble.pem -out mumble-key.pem
Andron
131
Saya mencoba perintah Anda tetapi saya punya:unable to load certificate 140584440387400:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
Damien Carol
15
perintah kunci (openssl pkey -in mumble.pem-out mumble-key.pem) memberikan ini: tidak dapat memuat kunci 129051320116880: kesalahan: 0906D06C: rutinitas PEM: PEM_read_bio: tidak ada baris awal: pem_lib.c: 703: Mengharapkan: ANY: KUNCI PRIVATE
mylord
2
openssl rsa -in your-cert.pem -outform pem-out your-key.pem
troyfolger
3
@Andron pkey dan rsa memberi saya Expecting: ANY PRIVATE KEYkesalahan.
Aero Wang
394

Konversi Menggunakan OpenSSL

Perintah ini memungkinkan Anda untuk mengonversi sertifikat dan kunci ke berbagai format untuk membuatnya kompatibel dengan jenis server atau perangkat lunak tertentu.

  • Ubah file DER (.crt .cer .der) menjadi PEM

    openssl x509 -inform der -in certificate.cer -out certificate.pem
    
  • Konversi file PEM ke DER

    openssl x509 -outform der -in certificate.pem -out certificate.der
    
  • Konversikan file PKCS # 12 (.pfx .p12) yang berisi kunci pribadi dan sertifikat ke PEM

    openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes
    
    You can add -nocerts to only output the private key or add -nokeys to only output the certificates.
    
  • Konversikan file sertifikat PEM dan kunci pribadi ke PKCS # 12 (.pfx .p12)

    openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
    
  • Konversi PEM ke CRT (file .CRT)

    openssl x509 -outform der -in certificate.pem -out certificate.crt
    

OpenSSL Convert PEM

  • Konversi PEM ke DER

    openssl x509 -outform der -in certificate.pem -out certificate.der
    
  • Konversi PEM ke P7B

    openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
    
  • Konversi PEM ke PFX

    openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
    

OpenSSL Convert DER

  • Ubah DER menjadi PEM

    openssl x509 -inform der -in certificate.cer -out certificate.pem
    

OpenSSL Convert P7B

  • Ubah P7B menjadi PEM

    openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
    
  • Konversi P7B ke PFX

    openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
    
    openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
    

OpenSSL Convert PFX

  • Ubah PFX menjadi PEM

    openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
    

Hasilkan kunci rsa oleh OpenSSL

  • Dengan menggunakan OpenSSL pada baris perintah yang pertama kali Anda perlukan untuk menghasilkan kunci publik dan pribadi, Anda harus melindungi kata sandi file ini menggunakan argumen -passout, ada banyak bentuk berbeda yang dapat diambil argumen ini, jadi bacalah dokumentasi OpenSSL tentang itu.

    openssl genrsa -out private.pem 1024
    
  • Ini menciptakan file kunci yang disebut private.pem yang menggunakan 1024 bit. File ini sebenarnya memiliki kunci privat dan publik, jadi Anda harus mengekstrak kunci publik dari file ini:

    openssl rsa -in private.pem -out public.pem -outform PEM -pubout
    
    or
    
    openssl rsa -in private.pem -pubout > public.pem
    
    or
    
    openssl rsa -in private.pem -pubout -out public.pem
    

    Anda sekarang akan memiliki public.pem yang hanya berisi kunci publik Anda, Anda dapat dengan bebas berbagi ini dengan pihak ke-3. Anda dapat menguji semuanya dengan hanya mengenkripsi sesuatu sendiri menggunakan kunci publik Anda dan kemudian mendekripsi menggunakan kunci pribadi Anda, pertama-tama kita perlu sedikit data untuk mengenkripsi:

  • File contoh:

    echo 'too many secrets' > file.txt
    
  • Anda sekarang memiliki beberapa data di file.txt, mari mengenkripsi data menggunakan OpenSSL dan kunci publik:

    openssl rsautl -encrypt -inkey public.pem -pubin -in file.txt -out file.ssl
    
  • Ini menciptakan versi terenkripsi file.txt memanggilnya file.ssl, jika Anda melihat file ini hanya sampah biner, tidak ada yang sangat berguna bagi siapa pun. Sekarang Anda dapat meng-enkripsinya menggunakan kunci pribadi:

    openssl rsautl -decrypt -inkey private.pem -in file.ssl -out decrypted.txt
    
  • Anda sekarang akan memiliki file yang tidak dienkripsi di decrypted.txt:

    cat decrypted.txt
    |output -> too many secrets
    

Opsi ALAT RSA di OpenSSL

  • NAMA

    rsa - alat pengolah kunci RSA

  • RINGKASAN

    openssl rsa [-help] [-performa PEM | NET | DER] [-performa PEM | NET | DER] [-in filename] [-inputin arg] [-out filename] [-passout arg] [-aes128] [- aes192] [-aes256] [-camellia128] [-camellia192] [-camellia256] [-des] [-des3] [-idea] [-tidak] [-tidak] [-tidak] [-modulus] [-tekan] [-pubin] [-pubout] [-RSAPublicKey_in] [-RSAPublicKey_out] [-engine id]

  • DESKRIPSI

    Perintah rsa memproses kunci RSA. Mereka dapat dikonversi antara berbagai bentuk dan komponennya dicetak. Catatan perintah ini menggunakan format SSLeay tradisional yang kompatibel untuk enkripsi kunci pribadi: aplikasi yang lebih baru harus menggunakan format PKCS # 8 yang lebih aman menggunakan utilitas pkcs8.

  • OPSI PERINTAH

    -help
    

    Cetak pesan penggunaan.

    -inform DER|NET|PEM
    

    Ini menentukan format input. Opsi DER menggunakan formulir yang disandikan ASN1 DER yang kompatibel dengan format PKCS # 1 RSAPrivateKey atau SubjectPublicKeyInfo. Formulir PEM adalah format default: ini terdiri dari format DER base64 yang disandikan dengan baris header dan footer tambahan. Pada input, kunci privat format PKCS # 8 juga diterima. Formulir NET adalah format yang dijelaskan di bagian CATATAN.

    -outform DER|NET|PEM
    

    Ini menentukan format output, opsi memiliki arti yang sama dengan opsi -informasikan.

    -in filename
    

    Ini menentukan nama file input untuk membaca kunci dari atau input standar jika opsi ini tidak ditentukan. Jika kunci dienkripsi, frasa sandi akan diminta.

    -passin arg
    

    sumber kata sandi file input. Untuk informasi lebih lanjut tentang format arg, lihat bagian PASS PHRASE ARGUMENTS di openssl.

    -out filename
    

    Ini menentukan nama file output untuk menulis kunci atau output standar jika opsi ini tidak ditentukan. Jika ada opsi enkripsi yang ditetapkan, maka frasa sandi akan diminta. Nama file keluaran tidak boleh sama dengan nama file input.

    -passout password
    

    sumber kata sandi file output. Untuk informasi lebih lanjut tentang format arg, lihat bagian PASS PHRASE ARGUMENTS di openssl.

    -aes128|-aes192|-aes256|-camellia128|-camellia192|-camellia256|-des|-des3|-idea
    

    Opsi-opsi ini mengenkripsi kunci pribadi dengan sandi yang ditentukan sebelum mengeluarkannya. Frase pass diminta. Jika tidak ada opsi yang ditentukan, kunci ditulis dalam teks biasa. Ini berarti bahwa menggunakan utilitas rsa untuk membaca dalam kunci terenkripsi tanpa opsi enkripsi dapat digunakan untuk menghapus frasa sandi dari kunci, atau dengan mengatur opsi enkripsi, kata itu dapat digunakan untuk menambah atau mengubah frasa sandi. Opsi ini hanya dapat digunakan dengan file output format PEM.

    -text
    

    mencetak berbagai komponen kunci publik atau pribadi dalam teks biasa selain versi yang disandikan.

    -noout
    

    opsi ini mencegah output dari versi kunci yang disandikan.

    -modulus
    

    opsi ini mencetak nilai modulus kunci.

    -check
    

    opsi ini memeriksa konsistensi kunci pribadi RSA.

    -pubin
    

    secara default kunci pribadi dibaca dari file input: dengan opsi ini kunci publik dibaca sebagai gantinya.

    -pubout
    

    secara default kunci pribadi adalah keluaran: dengan opsi ini kunci publik akan menjadi keluaran. Opsi ini secara otomatis ditetapkan jika inputnya adalah kunci publik.

    -RSAPublicKey_in, -RSAPublicKey_out
    

    seperti -pubin dan -pubout kecuali format RSAPublicKey yang digunakan.

    -engine id
    

    menentukan mesin (dengan string id uniknya) akan menyebabkan rsa mencoba untuk mendapatkan referensi fungsional ke mesin yang ditentukan, sehingga menginisialisasi jika diperlukan. Mesin kemudian akan ditetapkan sebagai default untuk semua algoritma yang tersedia.

  • CATATAN

    Format kunci pribadi PEM menggunakan baris header dan footer:

    -----BEGIN RSA PRIVATE KEY-----
    
    -----END RSA PRIVATE KEY-----
    

    Format kunci publik PEM menggunakan baris header dan footer:

    -----BEGIN PUBLIC KEY-----
    
    -----END PUBLIC KEY-----
    

    Format PEM RSAPublicKey menggunakan baris header dan footer:

    -----BEGIN RSA PUBLIC KEY-----
    
    -----END RSA PUBLIC KEY-----
    

    Formulir NET adalah format yang kompatibel dengan server Netscape yang lebih lama dan file .key Microsoft IIS, ini menggunakan RC4 tawar untuk enkripsi. Ini tidak terlalu aman dan hanya digunakan jika diperlukan.

    Beberapa versi IIS yang lebih baru memiliki data tambahan dalam file .key yang diekspor. Untuk menggunakannya dengan utilitas, lihat file dengan editor biner dan cari string "private-key", kemudian lacak kembali ke urutan byte 0x30, 0x82 (ini adalah ASN1 SEQUENCE). Salin semua data dari titik ini dan seterusnya ke file lain dan gunakan itu sebagai input ke utilitas rsa dengan opsi NET informasi.

    CONTOH

    Untuk menghapus frasa sandi pada kunci pribadi RSA:

     openssl rsa -in key.pem -out keyout.pem
    

    Untuk mengenkripsi kunci pribadi menggunakan triple DES:

     openssl rsa -in key.pem -des3 -out keyout.pem
    

    Untuk mengonversi kunci pribadi dari format PEM ke DER:

      openssl rsa -in key.pem -outform DER -out keyout.der
    

    Untuk mencetak komponen kunci pribadi ke output standar:

      openssl rsa -in key.pem -text -noout
    

    Untuk hanya menampilkan bagian publik dari kunci pribadi:

      openssl rsa -in key.pem -pubout -out pubkey.pem
    

    Keluarkan bagian publik dari kunci pribadi dalam format RSAPublicKey:

      openssl rsa -in key.pem -RSAPublicKey_out -out pubkey.pem
    
hijau abadi
sumber
32
Tetap ini tidak menjawab pertanyaan yaitu bagaimana cara mendapatkan kunci pribadi dari sertifikat biner (diekspor).
bbaassssiiee
terima kasih, bertanya-tanya apakah saya memiliki PEM yang berisi kunci pribadi dan sertifikat, bagaimana saya bisa mendapatkan sertifikat saja? Saya tahu saya dapat menyalin bagian sertifikat dari itu menggunakan editor teks, tapi saya ingin tahu apakah ada perintah openssl, terima kasih
workplaylifecycle
46

Untuk mengekstrak kunci dan sertifikat dari file pem:

Ekstrak kunci

openssl pkey -in foo.pem -out foo.key

Metode lain mengekstraksi kunci ...

openssl rsa -in foo.pem -out foo.key

Ekstrak semua sertifikat, termasuk Rantai CA

openssl crl2pkcs7 -nocrl -certfile foo.pem | openssl pkcs7 -print_certs -out foo.cert

Ekstrak sertifikat teks pertama sebagai DER

openssl x509 -in foo.pem -outform DER -out first-cert.der
Jalan Raya Kehidupan
sumber
7
openssl x509 -format der -in C: \ Users \ Greg \ .ssh \ e360_stork_listener.pem -out C: \ Users \ Greg \ .ssh \ e360_stork_listener.crt tidak dapat memuat sertifikat 4294956672: kesalahan: 0906D06C: PEM rutinitas: PEM_read_bio: no start line: pem_lib.c: 708: Mengharapkan: TRUSTED CERTIFICATE
user3217883
5

0. Prasyarat : openssl harus dipasang. Di Windows, jika Git Bashsudah diinstal, coba itu! Binari alternatif dapat ditemukan di sini.

1. Ekstrak .keydari .pem:

openssl pkey -in cert.pem -out cert.key

2. Ekstrak .crtdari .pem:

openssl crl2pkcs7 -nocrl -certfile cert.pem | openssl pkcs7 -print_certs -out cert.crt
Saikat
sumber
1

.Crt menyimpan sertifikat .. dalam format pem. Jadi .pem, sementara itu juga dapat memiliki hal-hal lain seperti csr (permintaan penandatanganan sertifikat), kunci pribadi, kunci publik, atau sertifikat lainnya, ketika menyimpan hanya sertifikat, adalah hal yang sama dengan .crt.

Pem adalah file yang disandikan basis 64 dengan header dan footer antara setiap bagian.

Untuk mengekstrak bagian tertentu, skrip perl seperti berikut ini benar-benar valid, tetapi jangan ragu untuk menggunakan beberapa perintah openssl.

 perl -ne "\$n++ if /BEGIN/; print if \$n == 1 && /BEGIN/.../END/;" mydomain.pem

di mana == 1 dapat diubah ke bagian mana pun yang Anda butuhkan. Tentunya jika Anda tahu persis header dan footer yang Anda butuhkan dan hanya ada satu di dalam file tersebut (biasanya jika Anda hanya menyimpan sertifikat dan kunci di sana), Anda dapat menyederhanakannya:

 perl -ne "print if /^-----BEGIN CERTIFICATE-----\$/.../END/;" mydomain.pem
Gerard ONeill
sumber
0

Jika Anda mengajukan pertanyaan ini karena Anda menggunakan mkcertmaka triknya adalah .pemfile tersebut adalah sertifikat dan-key.pem file adalah kuncinya.

(Anda tidak perlu mengonversi, jalankan saja mkcert yourdomain.dev otherdomain.dev)

Barney
sumber