본문 바로가기

Programming Language/Java & Scala

인증서란? openJDK의 cacerts 설명

인증서(Certificate)

디지털 인증서라고도 부른다. 유저 -> 브라우저 또는 서버 -> 서버 간에 암호화된 연결을 수립하는데 사용된다. 인증되지 않는 사용자의 네트워크 데이터 탈취를 막기 위한 용도.

 

SSL 인증서는 공개키 방식을 사용한다. 공개키 방식은 공개키와 비밀키 방식이 있다. 공개키 방식으로 암호화하고 비공개키로 복호화한다. 비공개키가 없으면 복호화할 수 없다. 

CA(Certificate authority)

인증서를 보장하는 기업들을 CA 또는 Root Certificate라고 부른다. CA는 신뢰성이 업격하게 공인된 기업들만이 참여할 수 있다. 대표적인 기업으로는 Symantec, Comodo, GlobalSign 등이 있다. 암호화된 통신을 제공하려는 서비스는 CA를 통해서 인증서를 구입해야한다.

TrustStore(트러스트 스토어)와 KeyStore(키 스토어)

키 스토어는 인증서를 포함한 파일이다. 자바에서 제공하는 keytool 툴을 통해 생성할  수 있다. 키 스토어는 보통 자바 코드 내부에서 사용하기 위해 주로 사용한다. 키 스토어는 1개 이상의 인증서를 포함하고 있다. 트러스트 스토어는 키 스토어 파일로서 외부와 통신하기 위해 공신력있는 외부 키와 인증서가 포함되어 있다.

cacerts

cacerts는 자바JDK를 설치하면 제공하는 트러스트 스토어다. JDK와 JRE설치시 포함되어 있으며 경로는 $JAVA_HOME/lib/security/cacerts 다.

openJDK를 설치하면 특정 경로에서 cacerts가 같이 설치된것을 확인할 수 있다.

$ sudo yum install -y java-1.8.0-openjdk-devel.x86_64
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Resolving Dependencies
--> Running transaction check
---> Package java-1.8.0-openjdk-de
...생략
$ cd /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.252.b09-2.amzn2.0.1.x86_64/jre/lib/security
$ ls cacerts
cacerts

 

참고 자료
- opentutorials.org/course/228/4894

- www.moreofless.co.uk/java-keystore-truststore-difference-certificate/