हम में से उन लोगों के लिए विस्तृत उत्तर स्थानीय विन्यास परिवर्तन करने के लिए तैयार है, जिसमें विन्यास फाइल का बैकअप शामिल है:
1. परीक्षण अगर यह परिवर्तन से पहले काम कर रहा है
यदि आपके पास पहले से कोई परीक्षण कार्यक्रम नहीं है, तो आप मेरे जावा SSLPing पिंग प्रोग्राम का उपयोग कर सकते हैं जो TLS हैंडशेक का परीक्षण करता है (केवल HTTPS नहीं, बल्कि किसी भी SSL / TLS पोर्ट के साथ काम करेगा)। मैं पूर्वनिर्मित SSLPing.jar का उपयोग करूंगा, लेकिन कोड पढ़ना और इसे स्वयं बनाना एक त्वरित और आसान काम है:
$ git clone https://github.com/dimalinux/SSLPing.git
Cloning into 'SSLPing'...
[... output snipped ...]
चूँकि मेरा जावा संस्करण 1.8.0_101 (इस लेखन के समय जारी नहीं किया गया) से पहले है, एक लेट्स एनक्रिप्ट प्रमाण पत्र डिफ़ॉल्ट रूप से सत्यापित नहीं करेगा। आइए देखें कि फिक्स लगाने से पहले क्या विफलता दिखती है:
$ 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. प्रमाण पत्र आयात करें
मैं JAVA_HOME पर्यावरण चर सेट के साथ Mac OS X पर हूँ। बाद में आदेश मान लेंगे कि यह चर जावा इंस्टॉलेशन के लिए सेट है जिसे आप संशोधित कर रहे हैं:
$ 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. सत्यापित करें कि यह परिवर्तनों के बाद काम कर रहा है
सत्यापित करें कि जावा अब SSL पोर्ट से जुड़कर खुश है:
$ java -jar SSLPing/dist/SSLPing.jar helloworld.letsencrypt.org 443
About to connect to 'helloworld.letsencrypt.org' on port 443
Successfully connected