Детальна відповідь для тих, хто бажає внести локальні зміни конфігурації, що включає в себе резервне копіювання файлу конфігурації:
1. Перевірте, чи працює він до змін
Якщо у вас ще немає програми тестування, ви можете використовувати мою програму java SSLPing ping, яка тестує рукостискання TLS (буде працювати з будь-яким портом SSL / TLS, а не тільки з HTTPS). Я буду використовувати вбудований SSLPing.jar, але прочитати код і створити його самостійно - це швидке і просте завдання:
$ git clone https://github.com/dimalinux/SSLPing.git
Cloning into 'SSLPing'...
[... output snipped ...]
Оскільки моя версія Java раніше, ніж 1.8.0_101 (не випущена під час написання цього повідомлення), сертифікат Let Encrypt не перевіряється за замовчуванням. Давайте подивимося, як виглядає збій перед застосуванням виправлення:
$ 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. Імпортуйте сертифікат
Я перебуваю на Mac OS X із набором змінної середовища JAVA_HOME. Пізніші команди припускають, що ця змінна встановлена для установки java, яку ви змінюєте:
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/
Зробіть резервну копію файлу cacerts, який ми будемо змінювати, щоб ви могли створити резервну копію будь-яких змін без повторної установки JDK:
$ sudo cp -a $JAVA_HOME/jre/lib/security/cacerts $JAVA_HOME/jre/lib/security/cacerts.orig
Завантажте сертифікат, який нам потрібно імпортувати:
$ wget https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.der
Виконайте імпорт:
$ 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. Перевірте, чи працює він після змін
Переконайтеся, що Java зараз рада підключитися до порту SSL:
$ java -jar SSLPing/dist/SSLPing.jar helloworld.letsencrypt.org 443
About to connect to 'helloworld.letsencrypt.org' on port 443
Successfully connected