Adakah yang bisa memberi tahu saya cara / perintah yang benar untuk mengekstrak / mengonversi sertifikat .crt
dan .key
file kunci pribadi dari suatu .pem
file? Saya baru saja membaca mereka dipertukarkan, tetapi tidak bagaimana.
Adakah yang bisa memberi tahu saya cara / perintah yang benar untuk mengekstrak / mengonversi sertifikat .crt
dan .key
file kunci pribadi dari suatu .pem
file? Saya baru saja membaca mereka dipertukarkan, tetapi tidak bagaimana.
Jawaban:
Saya dapat mengubah pem ke crt menggunakan ini:
openssl x509 -outform der -in your-cert.pem -out your-cert.crt
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
unable to load certificate 140584440387400:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE
Expecting: ANY PRIVATE KEY
kesalahan.
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
Untuk mengekstrak kunci dan sertifikat dari file pem:
openssl pkey -in foo.pem -out foo.key
Metode lain mengekstraksi kunci ...
openssl rsa -in foo.pem -out foo.key
openssl crl2pkcs7 -nocrl -certfile foo.pem | openssl pkcs7 -print_certs -out foo.cert
openssl x509 -in foo.pem -outform DER -out first-cert.der
0. Prasyarat : openssl
harus dipasang. Di Windows, jika Git Bash
sudah diinstal, coba itu! Binari alternatif dapat ditemukan di sini.
1. Ekstrak .key
dari .pem
:
openssl pkey -in cert.pem -out cert.key
2. Ekstrak .crt
dari .pem
:
openssl crl2pkcs7 -nocrl -certfile cert.pem | openssl pkcs7 -print_certs -out cert.crt
.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