Identifikasi sertifikat yang diperlukan (hilang) yang menyebabkan aplikasi Java gagal

2

Saya menggunakan Intellij IDEA 15, IDE berbasis Java. Itu memungkinkan saya mengklik tautan di kelas Java open-source apa pun di proyek saya dan mengunduh sumber dan dokumentasi dari internet. Namun, fitur ini gagal sekarang karena kita harus melalui server proxy, yang melakukan substitusi sertifikat. Meskipun sistem Windows yang saya tahu tentang sertifikat lokal, Java VM yang saya gunakan tidak mengetahuinya, sehingga proses pengunduhan gagal dengan kesalahan ini:

sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Solusinya tampaknya mengekspor sertifikat yang tepat dari toko sertifikat Windows box saya dan menambahkannya ke toko sertifikat JVM /jre/lib/security/cacert, kecuali bahwa saya tidak tahu yang mana dari puluhan sertifikat di toko Windows yang hilang.

Adakah yang bisa menyarankan metode debug untuk mengidentifikasi sertifikat yang hilang? Dalam kode saya sendiri, saya akan menetapkan breakpoint menggunakan Intellij dan melihat nilai-nilai yang diteruskan, tetapi karena masalahnya ada di dalam Intellij, saya benar-benar tidak tahu bagaimana mendapatkan nilai-nilai ini.

Bantuan apa pun dihargai, jika ini perlu dipindahkan ke komunitas StackExchange yang berbeda, saya mengerti.

pengguna1071914
sumber

Jawaban:

2

Server proxy selalu menyenangkan!

Baik. Trik ketika melacak masalah sertifikat adalah bahwa sertifikat root adalah yang paling penting . Sertifikat root dari rantai kepercayaan adalah CA, dan jika sistem Anda mempercayai CA, itu juga mempercayai apa pun yang ditandatanganinya. Sebaliknya, jika CA tidak dipercaya, apa pun yang ditandatanganinya tidak valid.

Windows Anda dikonfigurasikan untuk mempercayai CA, mungkin milik departemen TI setempat. Namun Java tidak.

Oleh karena itu: Anda perlu mendapatkan kunci CA yang menghasilkan sertifikat pada server proxy Anda, dan memasukkannya ke dalam Java keystore Anda.

Anda mungkin dapat menemukan ini dengan membuka situs aman apa pun di browser web apa pun, membuka properti halaman, dan melihat pada sertifikat yang sebenarnya. Di Firefox, yang terlihat seperti ini:

Properti sertifikat Firefox

Anda akan klik pada tingkat atas, di sini disebut "COMODO ECC Certification Authority", ekspor, dan kemudian gunakan java keytooluntuk menginstalnya sebagai CA.

Catatan: Pada pengaturan Anda, nama pasti akan berbeda. Kemungkinannya, itu bukan nama perusahaan yang dikenal dengan sertifikat seperti Comodo atau Verisign, itu akan menjadi nama vendor peralatan seperti Barracuda atau Bluecoat

Rincian lebih lanjut tentang cara kerja keytoolpada Windows tersedia di sini

Mikey TK
sumber