구성 파일 백업을 포함하여 로컬 구성을 변경하려는 사용자를위한 자세한 답변 :
1. 변경 전에 작동하는지 테스트
아직 테스트 프로그램이없는 경우 TLS 핸드 셰이크를 테스트하는 Java SSLPing ping 프로그램을 사용할 수 있습니다 (HTTPS뿐만 아니라 모든 SSL / TLS 포트에서 작동 함). 미리 빌드 된 SSLPing.jar를 사용하지만 코드를 읽고 직접 빌드하는 것은 빠르고 쉬운 작업입니다.
$ git clone https://github.com/dimalinux/SSLPing.git
Cloning into 'SSLPing'...
[... output snipped ...]
내 Java 버전이 1.8.0_101 (이 글 작성 당시에 출시되지 않음) 이전이므로 Let 's 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. 인증서 가져 오기
JAVA_HOME 환경 변수가 설정된 Mac OS X에 있습니다. 이후 명령은 수정중인 Java 설치에 대해이 변수가 설정된 것으로 가정합니다.
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/
JDK를 다시 설치하지 않고도 변경 사항을 취소 할 수 있도록 수정할 cacerts 파일의 백업을 만듭니다.
$ 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