Saya ingin mengimpor sertifikat yang ditandatangani sendiri ke Jawa sehingga aplikasi Java apa pun yang akan mencoba membuat koneksi SSL akan mempercayai sertifikat ini.
Sejauh ini, saya berhasil mengimpornya
keytool -import -trustcacerts -noprompt -storepass changeit -alias $REMHOST -file $REMHOST.pem
keytool -import -trustcacerts -noprompt -keystore cacerts -storepass changeit -alias $REMHOST -file $REMHOST.pem
Namun, ketika saya mencoba menjalankan HTTPSClient.class
saya masih mendapatkan:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: Gagal membangun jalur PKIX: sun.security.provider.certpath.SunCertPathBuilderException: tidak dapat menemukan jalur sertifikasi yang valid untuk target yang diminta
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider())
sama sekali tidak perlu di bagian pertama. Yang kedua tidak melakukan verifikasi sertifikat. Cobalah dengan yang sederhanaURLConnection
untuk memulai. Apakah Anda yakin Anda sudah dimodifikasicacerts
dilib/security
instalasi JRE Anda? Sudahkah Anda mencobatrustmanager
opsi debugging ?Jawaban:
Pada Windows cara termudah adalah dengan menggunakan portecle program .
System.out.println(System.getProperty("java.home"));
Di Linux:
Anda dapat mengunduh sertifikat SSL dari server web yang sudah menggunakannya seperti ini:
Secara opsional verifikasi informasi sertifikat:
Impor sertifikat ke keystore Java cacerts:
sumber
ps -ef | grep java
yang memberitahu saya bahwa java saya sedang berjalan dari openjdk yang terletak di / usr / lib / jvm / java-openjdk / bin / java. Juga, jika ini jika untuk aplikasi web ingatlah untuk memulai kembali. Terima kasih untuk bantuannya!!sumber
Saya akhirnya menulis skrip kecil yang menambahkan sertifikat ke keystores, sehingga lebih mudah digunakan.
Anda bisa mendapatkan versi terbaru dari https://github.com/ssbarnea/keytool-trust
`` `
sumber
Ini berhasil untuk saya. :)
sumber
Jika Anda menggunakan sertifikat yang ditandatangani oleh Otoritas Sertifikat yang tidak termasuk dalam file Java cacerts secara default, Anda perlu menyelesaikan konfigurasi berikut untuk koneksi HTTPS. Untuk mengimpor sertifikat ke dalam cacerts:
sumber
Perintah sederhana 'keytool' juga berfungsi di Windows dan / atau dengan Cygwin.
JIKA Anda menggunakan Cygwin di sini adalah perintah yang dimodifikasi yang saya gunakan dari bawah jawaban "S.Botha's":
Jalankan perintah keytool dari dalamnya, di mana Anda memberikan path ke Cert baru Anda di akhir, seperti:
Perhatikan, karena jika ini di bawah Cygwin Anda memberikan path ke program non-Cygwin, sehingga path tersebut seperti-DOS dan dalam tanda kutip.
sumber
Mungkin ingin mencoba
saya benar-benar tidak tahu di mana ia meletakkan sertifikat Anda jika Anda hanya menulis
cacerts
cukup berikan jalan penuhsumber
instal sertifikat di java linux
/ opt / jdk (versi) / bin / keytool -import -alias aliasname -file Certificate.cer -keystore cacerts -storepass password
sumber
sumber