Câu trả lời chi tiết cho những người trong chúng ta sẵn sàng thực hiện các thay đổi cấu hình cục bộ bao gồm sao lưu tệp cấu hình:
1. Kiểm tra xem nó có hoạt động không trước khi thay đổi
Nếu bạn chưa có chương trình thử nghiệm, bạn có thể sử dụng chương trình ping SSLPing java của tôi để kiểm tra bắt tay TLS (sẽ hoạt động với bất kỳ cổng SSL / TLS nào, không chỉ HTTPS). Tôi sẽ sử dụng SSLPing.jar dựng sẵn, nhưng việc đọc mã và tự xây dựng mã là một nhiệm vụ nhanh chóng và dễ dàng:
$ git clone https://github.com/dimalinux/SSLPing.git
Cloning into 'SSLPing'...
[... output snipped ...]
Vì phiên bản Java của tôi cũ hơn 1.8.0_101 (không được phát hành tại thời điểm viết bài này), chứng chỉ Let's Encrypt sẽ không xác minh theo mặc định. Hãy xem lỗi trông như thế nào trước khi áp dụng bản sửa lỗi:
$ 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. Nhập chứng chỉ
Tôi đang sử dụng Mac OS X với tập biến môi trường JAVA_HOME. Các lệnh sau đó sẽ giả sử biến này được đặt cho cài đặt java mà bạn đang sửa đổi:
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/
Tạo bản sao lưu của tệp cacerts mà chúng tôi sẽ sửa đổi để bạn có thể sao lưu bất kỳ thay đổi nào mà không cần cài đặt lại JDK:
$ sudo cp -a $JAVA_HOME/jre/lib/security/cacerts $JAVA_HOME/jre/lib/security/cacerts.orig
Tải xuống chứng chỉ ký mà chúng tôi cần để nhập:
$ wget https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.der
Thực hiện nhập:
$ 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. Xác minh rằng nó đang hoạt động sau những thay đổi
Xác minh rằng Java hiện hài lòng khi kết nối với cổng SSL:
$ java -jar SSLPing/dist/SSLPing.jar helloworld.letsencrypt.org 443
About to connect to 'helloworld.letsencrypt.org' on port 443
Successfully connected