Yapılandırma dosyasını yedeklemeyi içeren yerel yapılandırma değişiklikleri yapmak isteyenler için ayrıntılı yanıt:
1. Değişikliklerden önce çalışıp çalışmadığını test edin
Halihazırda bir test programınız yoksa, TLS anlaşmasını test eden java SSLPing ping programımı kullanabilirsiniz (yalnızca HTTPS ile değil, herhangi bir SSL / TLS bağlantı noktasıyla çalışacaktır). Önceden oluşturulmuş SSLPing.jar dosyasını kullanacağım, ancak kodu okumak ve kendiniz oluşturmak hızlı ve kolay bir iştir:
$ git clone https://github.com/dimalinux/SSLPing.git
Cloning into 'SSLPing'...
[... output snipped ...]
Java sürümüm 1.8.0_101'den daha eski olduğundan (bu yazının yazıldığı tarihte piyasaya sürülmedi), Let's Encrypt sertifikası varsayılan olarak doğrulanmayacaktır. Düzeltmeyi uygulamadan önce hatanın neye benzediğini görelim:
$ 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. Sertifikayı içe aktarın
JAVA_HOME ortam değişkeni setiyle Mac OS X kullanıyorum. Daha sonraki komutlar, bu değişkenin değiştirdiğiniz java kurulumu için ayarlandığını varsayacaktır:
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/
Değiştireceğimiz cacerts dosyasının bir yedeğini alın, böylece herhangi bir değişikliği JDK'yi yeniden yüklemeden geri alabilirsiniz:
$ sudo cp -a $JAVA_HOME/jre/lib/security/cacerts $JAVA_HOME/jre/lib/security/cacerts.orig
İçe aktarmamız gereken imza sertifikasını indirin:
$ wget https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.der
İçe aktarma işlemini gerçekleştirin:
$ 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. Değişikliklerden sonra çalıştığını doğrulayın
Java'nın artık SSL bağlantı noktasına bağlanmaktan memnun olduğunu doğrulayın:
$ java -jar SSLPing/dist/SSLPing.jar helloworld.letsencrypt.org 443
About to connect to 'helloworld.letsencrypt.org' on port 443
Successfully connected