Ini cukup mudah, menggunakan jdk6 setidaknya ...
bash $ keytool -keystore foo.jks -genkeypair -alias foo \
-nama 'CN = foo.example.com, L = Melbourne, ST = Victoria, C = AU'
Masukkan kata sandi keystore:
Masukkan kembali kata sandi baru:
Masukkan kata sandi kunci untuk
(KEMBALI jika sama dengan kata sandi keystore):
bash $ keytool -keystore foo.jks -exportcert -alias foo | \
openssl x509-informasikan der -text
Masukkan kata sandi keystore: asdasd
Sertifikat:
Data:
Versi: 3 (0x2)
Nomor Seri: 1237334757 (0x49c03ae5)
Algoritma Tanda Tangan: dsaWithSHA1
Penerbit: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
Keabsahan
Tidak Sebelum: Mar 18 00:05:57 2009 GMT
Not After: Jun 16 00:05:57 2009 GMT
Subjek: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
Info Kunci Publik Subjek:
Algoritma Kunci Publik: dsaEncryption
Kunci Publik DSA:
pub:
00: e2: 66: 5c: e0: 2e: da: e0: 6b: a6: aa: 97: 64: 59: 14:
7e: a6: 2e: 5a: 45: f9: 2f: b5: 2d: f4: 34: 27: e6: 53: c7:
bash $ keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcstoretype jks \
-deststoretype pkcs12
Masukkan kata sandi tujuan utama:
Masukkan kembali kata sandi baru:
Masukkan kata sandi keystore sumber:
Entri untuk alias foo berhasil diimpor.
Perintah impor selesai: 1 entri berhasil diimpor, 0 entri gagal atau dibatalkan
bash $ openssl pkcs12 -dalam foo.p12 -keluar dari foo.pem
Masukkan Kata Sandi Impor:
MAC terverifikasi OK
Masukkan frase pass PEM:
Memverifikasi - Masukkan frase pass PEM:
bash $ openssl x509 -text -in foo.pem
Sertifikat:
Data:
Versi: 3 (0x2)
Nomor Seri: 1237334757 (0x49c03ae5)
Algoritma Tanda Tangan: dsaWithSHA1
Penerbit: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
Keabsahan
Tidak Sebelum: Mar 18 00:05:57 2009 GMT
Not After: Jun 16 00:05:57 2009 GMT
Subjek: C = AU, ST = Victoria, L = Melbourne, CN = foo.example.com
Info Kunci Publik Subjek:
Algoritma Kunci Publik: dsaEncryption
Kunci Publik DSA:
pub:
00: e2: 66: 5c: e0: 2e: da: e0: 6b: a6: aa: 97: 64: 59: 14:
7e: a6: 2e: 5a: 45: f9: 2f: b5: 2d: f4: 34: 27: e6: 53: c7:
bash $ openssl dsa -text -in foo.pem
baca kunci DSA
Masukkan frase pass PEM:
Kunci Pribadi: (1024 bit)
priv:
00: 8f: b1: af: 55: 63: 92: 7c: d2: 0f: e6: f3: a2: f5: ff:
1a: 7a: fe: 8c: 39: dd
pub:
00: e2: 66: 5c: e0: 2e: da: e0: 6b: a6: aa: 97: 64: 59: 14:
7e: a6: 2e: 5a: 45: f9: 2f: b5: 2d: f4: 34: 27: e6: 53: c7:
Anda berakhir dengan:
- foo.jks - keystore dalam format java.
- foo.p12 - keystore dalam format PKCS # 12.
- foo.pem - semua kunci dan sertifikat dari keystore, dalam format PEM.
(File terakhir ini dapat dibagi menjadi beberapa kunci dan sertifikat jika Anda mau.)
Ringkasan perintah - untuk membuat keystore JKS:
keytool -keystore foo.jks -genkeypair -alias foo \
-dname 'CN=foo.example.com,L=Melbourne,ST=Victoria,C=AU'
Ringkasan perintah - untuk mengonversi JKS keystore menjadi PKCS # 12 keystore, lalu ke file PEM:
keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcstoretype jks \
-deststoretype pkcs12
openssl pkcs12 -in foo.p12 -out foo.pem
jika Anda memiliki lebih dari satu sertifikat di keystore JKS Anda, dan Anda hanya ingin mengekspor sertifikat dan kunci yang terkait dengan salah satu alias, Anda dapat menggunakan variasi berikut:
keytool -importkeystore -srckeystore foo.jks \
-destkeystore foo.p12 \
-srcalias foo \
-srcstoretype jks \
-deststoretype pkcs12
openssl pkcs12 -in foo.p12 -out foo.pem
Ringkasan perintah - untuk membandingkan JKS keystore ke file PEM:
keytool -keystore foo.jks -exportcert -alias foo | \
openssl x509 -inform der -text
openssl x509 -text -in foo.pem
openssl dsa -text -in foo.pem
Saya terus mendapatkan kesalahan
openssl
saat menggunakan perintah StoBor:Untuk beberapa alasan, hanya gaya perintah ini yang akan bekerja untuk file JKS saya
Kuncinya adalah pengaturan
destkeypass
, nilai argumen tidak masalah.sumber
The
keytool
perintah tidak akan memungkinkan Anda untuk mengekspor kunci pribadi dari toko kunci. Anda harus menulis beberapa kode Java untuk melakukan ini. Buka penyimpanan kunci, dapatkan kunci yang Anda butuhkan, dan simpan ke file dalam format PKCS # 8. Simpan sertifikat yang terkait juga.Gunakan utilitas OpenSSL untuk mengonversi file-file ini (yang dalam format biner) ke format PEM.
sumber
Konversi langsung dari jks ke file pem menggunakan keytool
sumber
keytool
danjboss
dokumen tanpa hasil. Terima kasih!Instruksi sederhana untuk mengonversi file JKS ke format PEM dan KEY (.crt & .key):
sumber
Saya menemukan solusi yang sangat menarik:
http://www.swview.org/node/191
Kemudian, saya membagi pasangan kunci publik / privat menjadi dua file private.key publi.pem dan berfungsi!
sumber
Mengkonversi JKS KeyStore ke file PEM tunggal dapat dengan mudah dilakukan dengan menggunakan perintah berikut:
Penjelasan:
keytool -list -rfc -keystore "myKeystore.jks"
mencantumkan semua yang ada di KeyStore 'myKeyStore.jks' dalam format PEM. Namun, ia juga mencetak informasi tambahan.| sed -e "/-*BEGIN [A-Z]*-*/,/-*END [A-Z]-*/!d"
menyaring semua yang tidak kita butuhkan. Kita hanya memiliki PEM dari semua yang ada di KeyStore.>> "myKeystore.pem"
tulis PEM ke file 'myKeyStore.pem'.sumber
sed "s/^\-*BEGIN [A-Z]*\-*$//g;s/^\-*END [A-Z]*\-*$//g"
gantinya (dengan gnu sed) tapi saya tidak yakin itu cukup jika ada lebih dari satu cert di keystore Andabash: !d": event not found
: untuk bash tanda seru adalah kunci pendek untuk menggunakan perintah. Untuk menggunakan jawaban ini, Anda perlu menggunakan tanda kutip sebagai pengganti tanda kutip untuk opsi yang digunakan sebagai -e untuk sedkeytool -list -rfc -keystore "myKeystore.jks" | sed -e '/-*BEGIN [A-Z]*-*/,/-*END [A-Z]-*/!d' >> "myKeystore.pem"
Pertama buang keystore dari JKS ke PKCS12
1. keytool -importkeystore -srckeystore ~ / .android / debug.keystore -destkeystore intermediate.p12 -srcstoretype JKS -deststoretype PKCS12
Buang file pkcs12 baru ke dalam pem
Anda harus memiliki sertifikat dan kunci pribadi dalam format pem. Pisahkan mereka. Masukkan bagian antara "BEGIN CERTIFICATE" dan "END CERTIFICATE" ke cert.x509.pem Letakkan bagian antara "BEGIN RSA PRIVATE KEY" dan "END RSA PRIVATE KEY" menjadi private.rsa.pem Konversikan kunci privat ke dalam format pk8 sebagai diharapkan oleh signapk
3. openssl pkcs8 -topk8 -format DER -in private.rsa.pem -informasikan PEM -out private.pk8 -nocrypt
sumber
Nah, OpenSSL harus melakukannya dengan mudah dari file # 12:
Mungkin lebih detail tentang apa kesalahan / kegagalan itu?
sumber
Jika Anda tidak menginstal openssl dan Anda mencari solusi cepat, ada perangkat lunak yang disebut portcle yang sangat berguna dan kecil untuk diunduh.
Kerugiannya adalah tidak ada baris perintah sejauh yang saya tahu. Namun dari GUI, cukup mudah untuk mengekspor kunci privat PEM:
Pilih Kunci Pribadi dan sertifikat dan format PEM
sumber
Coba Keystore Explorer http://keystore-explorer.org/
KeyStore Explorer adalah pengganti GUI open source untuk utilitas baris perintah Java keytool dan jarsigner. Itu openssl / pkcs12 juga.
sumber
pertama buat file keystore sebagai
C: \ Program Files \ Android \ Android Studio \ jre \ bin> keytool -keystore androidkey.jks -genkeypair -alias androidkey
Masukkan kata sandi keystore: Masukkan
kembali kata sandi baru:
Apa nama depan dan belakang Anda? Tidak dikenal: FirstName LastName
Apa nama unit organisasi Anda? Tidak dikenal: Pengembangan Seluler
Apa nama organisasi Anda? Tidak dikenal: nama perusahaan Anda
Apa nama Kota atau Lokalitas Anda? Apa nama Negara Bagian atau Provinsi Anda?
Apa kode negara dua huruf untuk unit ini? Tidak dikenal: IN // tekan enter
Apakah CN = FirstName LastName, OU = Pengembangan Mobile, O = nama perusahaan Anda, L = CityName, ST = StateName, C = IN benar? [tidak]: ya
Masukkan kata sandi kunci untuk (KEMBALI jika sama dengan kata sandi keystore): tekan enter jika Anda menginginkan kata sandi yang sama
C: \ Program Files \ Android \ Android Studio \ jre \ bin> keytool -export -rfc -alias androidkey -file android_certificate.pem -keystore androidkey.jks
Masukkan kata sandi keystore:
Sertifikat disimpan dalam file
sumber
Jawaban yang paling tepat dari semuanya adalah bahwa ini TIDAK mungkin.
Java keystore hanyalah fasilitas penyimpanan untuk kunci kriptografi dan sertifikat sedangkan PEM adalah format file untuk sertifikat X.509 saja.
sumber