Szczegółowa odpowiedź dla tych z nas, którzy chcą dokonać lokalnych zmian konfiguracyjnych, które obejmują utworzenie kopii zapasowej pliku konfiguracyjnego:
1. Sprawdź, czy działa przed zmianami
Jeśli nie masz jeszcze programu testowego, możesz użyć mojego programu ping SSLPing java, który testuje uzgadnianie TLS (będzie działać z dowolnym portem SSL / TLS, nie tylko HTTPS). Użyję gotowego pliku SSLPing.jar, ale czytanie kodu i samodzielne tworzenie go to szybkie i łatwe zadanie:
$ git clone https://github.com/dimalinux/SSLPing.git
Cloning into 'SSLPing'...
[... output snipped ...]
Ponieważ moja wersja Java jest starsza niż 1.8.0_101 (nie została wydana w momencie pisania tego tekstu), certyfikat Let's Encrypt nie będzie domyślnie weryfikowany. Zobaczmy, jak wygląda awaria przed zastosowaniem poprawki:
$ 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. Zaimportuj certyfikat
Pracuję na Mac OS X z ustawioną zmienną środowiskową JAVA_HOME. Późniejsze polecenia przyjmą, że ta zmienna jest ustawiona dla modyfikowanej instalacji Java:
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/
Utwórz kopię zapasową pliku cacerts, który będziemy modyfikować, aby móc cofnąć wszelkie zmiany bez ponownej instalacji JDK:
$ sudo cp -a $JAVA_HOME/jre/lib/security/cacerts $JAVA_HOME/jre/lib/security/cacerts.orig
Pobierz certyfikat podpisujący, który musimy zaimportować:
$ wget https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.der
Wykonaj import:
$ 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. Sprawdź, czy działa po zmianach
Sprawdź, czy Java jest teraz zadowolona z połączenia z portem SSL:
$ java -jar SSLPing/dist/SSLPing.jar helloworld.letsencrypt.org 443
About to connect to 'helloworld.letsencrypt.org' on port 443
Successfully connected