반응형
* Spring boot 에서 다른 API서버의 Rest api를 호출 할 경우(HTTPS), 아래와 같은 에러 발생
- 원인
- 1. 연결하고자 하는 https 서버의 인증서가 신뢰하는 인증기관 인증서목록에 빠져있음(keystore)
- 2. 서버/클라이언트간 사용하려는 SSL/TLS 버전이 맞지 않음.(TLS 1.0만 지원하는 서버에 1.2로 HandShaking요청)
- 3. SSL/TLS 통신에 사용하려는 cipher suite가 오래되거나, 지원하지 않음(JDK 1.8부터는 RC4를 사용하면 에러)
- 해결
- 여기서는 1번 원인인 경우의 해결책만을 제시한다.
- 1. gist에서 InstallCert.java 다운로드
- # curl -O gist.githubusercontent.com/lesstif/cd26f57b7cfd2cd55241b20e05b5cd93/raw/InstallCert.java
- 2. 컴파일
- # javac InstallCert.java
- 3. InstallCert 구동
- localhost에 ssl인증서를 받아올 호스트명을 입력
- java -cp ./ InstallCert {testdomain.com}
- ex) java -cp ./ InstallCert naver.com
- java -cp ./ InstallCert {testdomain.com}
- localhost에 ssl인증서를 받아올 호스트명을 입력
- 4. 아래 메세지가 나오면, keystore 부분과 alias 명을 기억해놓는다.
- Added certificate to keystore 'jssecacerts' using alias 'domainse-1'
- 5. keytool 로 keystore에서 인증서 추출(keystore암호 : changeit 으로 가정하고 진행)
- keytool -exportcert -keystore jssecacerts -storepass changeit -file output.cert -alias domainse-1
- 6. 현재 JDK 의 keystore에 cert import
- keytool -importcert -keystore ${JAVA_HOME}/jre/lib/security/cacerts -storepass changeit -file output.cert -alias domainse-1
- 7. Tomcat 재시작
반응형