tomcat에 인증서 경로를 넣어주면 문제없겠다고 생각했었는데
jvm에 인증서를 등록해야 한다더라.
jvm에 인증서를 등록한다는 개념조차 없었는데 하하
jvm 또는 java에 인증서를 등록한다 라고 표현하는 것 같다.
일단 에러를 해결하기 위한 마법의 명령어를 제시하자면 다음과 같다.
keytool -import -trustcacerts -alias letsencrypt -file [공개키경로(pem형식)] -keypass [비밀번호] -keystore ${JAVA_HOME}/jre/lib/security/cacerts -storepass changeit
나의 경우 jre/lib/security/cacerts 경로를 주면서 등록했는데
용어 정리도 할 겸 여기서 의문점 몇가지
1. cacerts 파일은 뭐지?
The cacerts file is a collection of trusted certificate authority (CA) certificates.
일단 여러개의 신뢰가능한 인증기관(CA)들의 컬렉션이라는데
이 파일에는 패스워드가 걸려있다 이 패스워드를 storepass라고 부르는데
디폴트로 'changeit'이 설정되어있다. 여기 등록된 내용을 보거나 새로운 인증서를 임포트 할 때 이 storepass가 필요하다고 한다.
2. KeyStore와 TrustStore
java는 KeyStore라는 인터페이스를 통해서 암호화 키와 인증서를 관리한다고 하는데 결국 cacerts가 keystore를 의미하는 것 같다.
keystroe는 서버가 자신의 인증서를 저장하기 위해 사용하고
truststore는 다른 쪽의 인증서를 저장하기 위해 사용한다.
참고 : http://www.java67.com/2012/12/difference-between-truststore-vs.html
3. storepass와 keypass
storepass는 keystore에 접근하기 위한 암호
keypass는 특정 키 쌍(공개키, 개인키) 의 개인키에 접근하기 위한 암호
4. jre에만 등록가능한건가? jdk에 등록할 수도 있지 않나?
단순하다. 현재 사용하는 프로덕트가 사용하는 곳에 등록하면 된다.
즉 JAVA_HOME의 환경변수가 가리키는 곳이 jre면 jre쪽 cacerts에
jdk면 jdk쪽 cacerts에 인증서를 넣으면 되는 거였다.
'Network' 카테고리의 다른 글
리버스 프록시 뒤에서 동작하는 https (0) | 2018.07.12 |
---|---|
openssl을 이용하여 pem 인증서를 pkcs12로 변환 (0) | 2018.07.05 |