Selama pengembangan klien layanan web Java saya mengalami masalah. Otentikasi untuk layanan web menggunakan sertifikat klien, nama pengguna, dan kata sandi. Sertifikat klien yang saya terima dari perusahaan di belakang layanan web dalam .cer
format. Ketika saya memeriksa file menggunakan editor teks, ia memiliki konten berikut:
-----BEGIN CERTIFICATE-----
[Some base64 encoded data]
-----END CERTIFICATE-----
Saya dapat mengimpor file ini sebagai sertifikat di Internet Explorer (tanpa harus memasukkan kata sandi!) Dan menggunakannya untuk mengotentikasi dengan layanan web.
Saya dapat mengimpor sertifikat ini ke dalam keystore dengan terlebih dahulu menghapus baris pertama dan terakhir, mengonversi ke unix baris baru dan menjalankan decode base64. File yang dihasilkan dapat diimpor ke keystore (menggunakan keytool
perintah). Ketika saya daftar entri dalam keystore, entri ini adalah tipe trustedCertEntry
. Karena jenis entri ini (?) Saya tidak dapat menggunakan sertifikat ini untuk mengautentikasi dengan layanan web. Saya mulai berpikir bahwa sertifikat yang disediakan adalah sertifikat publik yang digunakan untuk otentikasi ...
Solusi yang saya temukan adalah mengimpor sertifikat di IE dan mengekspornya sebagai .pfx
file. File ini dapat dimuat sebagai keystore dan dapat digunakan untuk mengautentikasi dengan layanan web. Namun saya tidak dapat mengharapkan klien saya untuk melakukan langkah-langkah ini setiap kali mereka menerima sertifikat baru. Jadi saya ingin memuat .cer
file langsung ke Java. Adakah pikiran?
Info tambahan: perusahaan di balik layanan web memberi tahu saya bahwa sertifikat harus diminta (menggunakan IE & situs web) dari PC dan pengguna yang akan mengimpor sertifikat nanti.
sumber
Mengimpor
.cer
file sertifikat yang diunduh dari browser (buka url dan gali untuk detailnya) ke cacerts keystore dijava_home\jre\lib\security
berfungsi untuk saya, sebagai lawan dari upaya untuk menghasilkan dan menggunakan keystore saya sendiri.java_home\jre\lib\security
cmd
dan CTRL+ SHIFT+ENTERyourAliasName
danpath\to\certificate.cer
masing - masing)Dengan cara ini Anda tidak perlu menentukan opsi JVM tambahan dan sertifikat harus dikenali oleh JRE.
sumber
java_home\jdk_x.xx\jre\lib\security
Untuk jalur absolut gunakan backslash, mis."C:\myCert.crt"
Tanda kutip adalah opsional jika jalur tidak mengandung spasi putih.Ini adalah kode yang saya gunakan untuk mengimpor file .cer secara terprogram ke dalam KeyStore baru.
sumber
Anda tidak harus membuat perubahan apa pun pada sertifikat. Apakah Anda yakin Anda menjalankan perintah impor yang benar?
Berikut ini berfungsi untuk saya:
di mana mycert.cer berisi:
sumber
Alat GUI open source tersedia di keystore-explorer.org
Layar berikut akan membantu (berasal dari situs resmi)
Layar default yang Anda dapatkan dengan menjalankan perintah:
Dan pergi ke
Examine
danExamine a URL
opsi lalu berikan URL web yang ingin Anda impor.Jendela hasil akan seperti di bawah ini jika Anda memberikan tautan situs google.
Ini adalah salah satu Use case dan sisanya terserah pengguna (semua kredit masuk ke keystore-explorer.org )
sumber
Sertifikat yang sudah Anda miliki mungkin adalah sertifikat server, atau sertifikat yang digunakan untuk menandatangani sertifikat server. Anda akan memerlukannya sehingga klien layanan web Anda dapat mengotentikasi server.
Tetapi jika tambahan Anda perlu melakukan otentikasi klien dengan SSL, maka Anda perlu mendapatkan sertifikat Anda sendiri, untuk mengotentikasi klien layanan web Anda. Untuk ini, Anda perlu membuat permintaan sertifikat; prosesnya melibatkan pembuatan kunci pribadi Anda sendiri, dan kunci publik yang sesuai, dan melampirkan kunci publik itu bersama dengan beberapa info Anda (email, nama, nama domain, dll) ke file yang disebut permintaan sertifikat. Kemudian Anda mengirim permintaan sertifikat itu ke perusahaan yang sudah meminta Anda untuk itu, dan mereka akan membuat sertifikat Anda, dengan menandatangani kunci publik Anda dengan kunci pribadi mereka, dan mereka akan mengirim Anda kembali file X509 dengan sertifikat Anda, yang Anda bisa sekarang tambahkan keystore Anda, dan Anda akan siap untuk terhubung ke layanan web menggunakan SSL yang membutuhkan otentikasi klien.
Untuk menghasilkan permintaan sertifikat Anda, gunakan "keytool -certreq -alias -file -keypass -keystore". Kirim file yang dihasilkan ke perusahaan yang akan menandatanganinya.
Ketika Anda mendapatkan kembali sertifikat Anda, jalankan "keytool -importcert -alias -keypass -keystore".
Anda mungkin perlu menggunakan -assepass dalam kedua kasus jika keystore dilindungi (yang merupakan ide yang baik).
sumber
Berikut ini adalah skrip yang saya gunakan untuk mengimpor banyak file crt dalam direktori saat ini ke java keystore. Simpan saja ini ke folder yang sama dengan sertifikat Anda, dan jalankan seperti ini:
import_all_certs.sh
sumber
Inilah cara kerjanya bagi saya:
sumber