1. 먼저 keytool을 이용하여 key를 생성한다.
keytool -genkey -keystore keystore -keyalg RSA
- getkey : 키를 생성한다.
- keystore : 키를 저장할 파일을 지정한다. 지정하지 않을 경우 계정디렉토리의 .keystore 파일이 생성된다.
- keyalg : 생성 알고리즘을 정한다.
명령이 실행되면 여러가지 입력요청을 받는다. 하나하나 넣어주자.
그러면 여기에서는 키값인 keystore 파일이 생성된다.
2. 생성된 이 키값으로도 SSL서버가 구현되고 클라이언트와 통신도 가능하다.
하지만 여기에 인증서를 추가해보자.
인증서를 신청하기 위해서는 csr 파일을 만들어야 한다. csr 파일을 추출해보자.
keytool -certreq -keyalg RSA -file csr.txt -keystore keystore
- certreq : csr 파일을 추출한다.
- file : 추출한 파일을 저장할 파일
위와 같은 명령어를 실행하면 csr.txt 파일을 생성된다. 이 파일을 가지고 인증서를 요청한다.
http://crosscert.com/service_global/Main.jsp (한극전자인증) 에서 인증서를 받을 수 있으며
구입하기 전에 Trial 인증서를 신청할 수 있다.
3. 인증서 메일이 오면 각각의 인증서를 파일로 만들어 keystore 에 생성한다.
(메일에 첨부파일은 없다. 드래그 하여 내용을 복사한 후 파일로 만든다.)
루트증명서 : root.txt
중간증명서 : inter.txt
증명서 : sign.txt
4. 루트증명서를 keystore 에 등록
keytool -import -alias root -keystore keystore -file root.txt
- import : 해당파일을 임포트한다.
- alias : 별칭으로 등록한다. 여기에서는 root.txt 파일에 대한 별칭이며 map 의 Key 값과 비슷하게 보면 된다.
나중에 keystore 에서 루트인증서를 export 할 경우, 이때의 키값을 root 로 이용한다.
5. 중간증명서를 keystore 에 등록
keytool -import -alias inter -keystore keystore -file inter.txt
6. 증명서를 keystore 에 등록
keytool -import -alias sign -keystore keystore -file sign.txt
7. 이로써 인증서 등록이 끝났다.
자바에서 이 인증서로 서버를 구동시킬 경우 명령행에 다음과 같이 입력한다.
# java -Djavax.net.ssl.keyStore=keystore -Djavax.net.ssl.keyStorePassword={비밀번호} {프로그램}
프로그램 안에서 직접 세팅 할 경우에는 소스에 다음과 같이 입력한다.
System.setProperty("javax.net.ssl.keyStore", "keystore");
System.setProperty("javax.net.ssl.keyStorePassword", "{비밀번호}");
클라이언트를 구동시킬 경우 다음과 같이 입력한다.
java -Djavax.net.ssl.trustStore=keystore -Djavax.net.ssl.trustStorePassword={비밀번호} {프로그램}
프로그램 안에서 직접 세팅 할 경우 소스에 다음과 같이 입력한다.
System.setProperty("javax.net.ssl.trustStore", "keystore");
System.setProperty("javax.net.ssl.trustStorePassword", "{비밀번호}");