Saya perlu menandatangani aplikasi Android ( .apk
).
Saya memiliki .pfx
file. Saya dikonversi ke .cer
file yang melalui Internet Explorer dan kemudian dikonversi .cer
ke .keystore
menggunakan keytool. Lalu saya mencoba masuk .apk
dengan jarsigner tetapi dikatakan bahwa .keystore tidak memuat kunci pribadi.
Apa yang saya lakukan salah?
Jawaban:
Menggunakan JDK 1.6 atau lebih baru
Telah ditunjukkan oleh Justin dalam komentar di bawah bahwa keytool saja yang mampu melakukan ini menggunakan perintah berikut (meskipun hanya di JDK 1.6 dan yang lebih baru):
Menggunakan JDK 1.5 atau lebih rendah
OpenSSL dapat melakukan semuanya. Jawaban di JGuru ini adalah metode terbaik yang saya temukan sejauh ini.
Pertama, pastikan Anda telah menginstal OpenSSL . Banyak sistem operasi sudah menginstalnya seperti yang saya temukan dengan Mac OS X.
Dua perintah berikut mengonversi file pfx ke format yang dapat dibuka sebagai penyimpanan kunci Java PKCS12:
Perhatikan bahwa nama yang diberikan pada perintah kedua adalah alias dari kunci Anda di penyimpanan kunci baru.
Anda dapat memverifikasi konten penyimpanan kunci menggunakan utilitas Java keytool dengan perintah berikut:
Terakhir, jika perlu, Anda dapat mengubahnya menjadi penyimpanan kunci JKS dengan mengimpor penyimpanan kunci yang dibuat di atas menjadi penyimpanan kunci baru:
sumber
jarsigner dapat menggunakan file pfx Anda sebagai keystore untuk menandatangani jar Anda. Pastikan file pfx Anda memiliki kunci privat dan rantai sertifikat saat Anda mengekspornya. Tidak perlu mengonversi ke format lain. Triknya adalah mendapatkan Alias dari file pfx Anda:
Setelah Anda memiliki nama lain, penandatanganannya mudah
Dua perintah di atas akan meminta Anda memasukkan kata sandi yang Anda tentukan di pfx export. Jika Anda ingin memiliki password Anda nongkrong di gunakan teks yang -storepass saklar sebelum -keystore saklar
Setelah ditandatangani, kagumi pekerjaan Anda:
sumber
Saya menemukan halaman ini yang memberi tahu Anda cara mengimpor PFX ke JKS (Java Key Store):
sumber
-srcstorepass
juga masalah saya. PFX ini dibuat oleh klien LetsEncrypt untuk WindowsFile PFX Anda harus berisi kunci pribadi di dalamnya. Ekspor kunci pribadi dan sertifikat langsung dari file PFX Anda (mis. Menggunakan OpenSSL) dan impor ke keystore Java Anda.
Edit
Informasi lebih lanjut:
openssl pkcs12 -in filename.pfx -nocerts -out key.pem
openssl pkcs12 -in filename.pfx -clcerts -nokeys -out cert.pem
keytool
.sumber
Justin (di atas) akurat. Namun, perlu diingat bahwa tergantung pada siapa Anda mendapatkan sertifikat (CA perantara, CA root terlibat atau tidak) atau bagaimana pfx dibuat / diekspor, terkadang rantai sertifikat bisa hilang. Setelah Impor, Anda akan memiliki sertifikat jenis PrivateKeyEntry, tetapi dengan panjang rantai 1.
Untuk mengatasinya, ada beberapa opsi. Opsi yang lebih mudah dalam pikiran saya adalah mengimpor dan mengekspor file pfx di IE (memilih opsi Menyertakan semua sertifikat dalam rantai). Proses impor dan ekspor sertifikat di IE harus sangat mudah dan didokumentasikan dengan baik di tempat lain.
Setelah diekspor, impor keystore seperti yang ditunjukkan Justin di atas. Sekarang, Anda akan memiliki keystore dengan sertifikat jenis PrivateKeyEntry dan dengan panjang rantai sertifikat lebih dari 1.
Klien layanan Web berbasis .Net tertentu mengalami error (tidak dapat membangun hubungan kepercayaan), jika Anda tidak melakukan hal di atas.
sumber
Jika Anda bekerja dengan JDK 1.5 atau di bawahnya, utilitas keytool tidak akan memiliki
-importkeystore
opsi (lihat dokumentasi keytool JDK 1.5 ) dan solusi dari MikeD hanya akan tersedia dengan mentransfer.pfx
pada mesin dengan JDK yang lebih baru (1.6 atau yang lebih baru).Opsi lain di JDK 1.5 atau lebih rendah (jika Anda memiliki produk Oracle WebLogic), adalah mengikuti petunjuk dari dokumen Oracle ini: Menggunakan Format Sertifikat PFX dan PEM dengan Keystore . Ini menjelaskan konversi ke
.pem
format, cara mengekstrak informasi sertifikat dari format tekstual ini, dan mengimpornya ke dalam.jks
format denganjava utils.ImportPrivateKey
utilitas (ini adalah utilitas yang disertakan dengan produk WebLogic).sumber