Jawaban mendetail bagi kami yang ingin membuat perubahan konfigurasi lokal yang mencakup mencadangkan file konfigurasi:
1. Uji apakah itu berfungsi sebelum perubahan
Jika Anda belum memiliki program pengujian, Anda dapat menggunakan program ping SSLPing java saya yang menguji handshake TLS (akan bekerja dengan port SSL / TLS apa pun, bukan hanya HTTPS). Saya akan menggunakan SSLPing.jar prebuilt, tetapi membaca kode dan membuatnya sendiri adalah tugas yang cepat dan mudah:
$ git clone https://github.com/dimalinux/SSLPing.git
Cloning into 'SSLPing'...
[... output snipped ...]
Karena versi Java saya lebih awal dari 1.8.0_101 (tidak dirilis pada saat penulisan ini), sertifikat Let's Encrypt tidak akan diverifikasi secara default. Mari kita lihat seperti apa kegagalan sebelum menerapkan perbaikan:
$ java -jar SSLPing/dist/SSLPing.jar helloworld.letsencrypt.org 443
About to connect to 'helloworld.letsencrypt.org' on port 443
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
[... output snipped ...]
2. Impor sertifikat
Saya menggunakan Mac OS X dengan kumpulan variabel lingkungan JAVA_HOME. Perintah selanjutnya akan menganggap variabel ini disetel untuk instalasi java yang Anda ubah:
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/
Buat cadangan file cacerts yang akan kami modifikasi sehingga Anda dapat mencadangkan perubahan apa pun tanpa menginstal ulang JDK:
$ sudo cp -a $JAVA_HOME/jre/lib/security/cacerts $JAVA_HOME/jre/lib/security/cacerts.orig
Unduh sertifikat penandatanganan yang perlu kami impor:
$ wget https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.der
Lakukan impor:
$ sudo keytool -trustcacerts -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -noprompt -importcert -alias lets-encrypt-x3-cross-signed -file lets-encrypt-x3-cross-signed.der
Certificate was added to keystore
3. Verifikasi bahwa ini berfungsi setelah perubahan
Pastikan Java sekarang dengan senang hati terhubung ke port SSL:
$ java -jar SSLPing/dist/SSLPing.jar helloworld.letsencrypt.org 443
About to connect to 'helloworld.letsencrypt.org' on port 443
Successfully connected