개발

keytool 을 이용하여 인증서 받기

에드몽단테스 2009. 10. 1. 13:10
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", "{비밀번호}");

반응형