본문 바로가기

Linux

android https 인증서 만들기(JKS)

Tomcat은 JKS, PKCS11 혹은 PKCS12 포맷의 Keystore를 지원한다. JKS 포맷은 Java Standard Keystore 포맷이며, JDK에 포함되어 있는 Keytool 명령어를 사용하여 생성할 수 있다. PKCS12 포맷은 인터넷 표준 포맷이고, OpenSSL를 사용하여 생성할 수 있다. 이글 에서는 설정이 좀더 간편한 JKS 포맷의 Keystore를 사용한 설정 방법을 정리한다. 

1. SSL 키 파일 생성
  - 아래와 같이 keytool 명령어를 이용하여 Keystore 파일을 생성한다.

$JAVA_HOME/bin/keytool -genkey -alias <keystore_alias> -keyalg RSA -keystore <keystore_file>

keystore 암호를 입력하십시오:    #Tomcat설정에 사용됨으로 기억해야 함.
새 암호를 다시 입력하십시오:     #암호확인
성을 입력하십시오.
  [Unknown]: Dim                      #기본갑 Unknown
조직 단위 이름을 입력하십시오.
  [Unknown]:  MyGroup            #기본갑 Unknown 
조직 이름을 입력하십시오.
  [Unknown]:  MyTeam             #기본갑 Unknown 
구/군/시 이름을 입력하십시오?
  [Unknown]:  MyCity                #기본갑 Unknown 
시/도 이름을 입력하십시오.
  [Unknown]:  MyProvince          #기본갑 Unknown 
이 조직의 두 자리 국가 코드를 입력하십시오.
  [Unknown]:  KR                       #기본갑 Unknown 
CN=MyGroup, OU=MyGroup, O=MyTeam, L=MyCity, ST=MyProvince, C=KR이(가) 맞습니까?
  [아니오]:  y
<tomcat>에 대한 키 암호를 입력하십시오.
(keystore 암호와 같은 경우 Enter를 누르십시오):   #엔터입력

* 위의 명령을 수행하고 나면 명령을 실행한 디렉토리에 ".keystore" 파일이 생성됨


3. CSR(Certificate Signing Reuest) 파일 생성
  - Verisign과 같은 CA(Certificat Autority) 공인 인증서 발급기관으로 부터 인증서를 발급 받기 위한 CSR 파일 생성 (위에서 생성한 keystore파일 생성)

keytool -certreq -keyalg RSA -alias tomcat -file certreq.csr -keystore <your_keystore_filename>


4. 발급받은 인증서를 keystore 파일에 저장
  - CA로 부터 발급받은 인증서르 keystore 파일에 저장한다.

# Import the Chain Certificate into your keystore
keytool -import -alias root -keystore <your_keystore_filename> -trustcacerts -file <filename_of_the_chain_certificate>

# And finally import your new Certificate
keytool -import -alias tomcat -keystore <your_keystore_filename> -file <your_certificate_filename>


5. Tomcat 설정
  - HTTPS 프로토콜을 제공하기 위한 Connector설정을 server.xml 파일에 추가한다. 

<Service name="Catalina">

      . . .

<Connector 
          port="8443" maxThreads="100"
          scheme="https" secure="true" SSLEnabled="true"
          keystoreFile="keystore 파일 경로" keystorePass="keystore 패스워드"
          clientAuth="false" sslProtocol="TLS"/>
       . . .     

</Service>


4. 참고자료

  - Tomcat HTTPS 설정 참고자료 : http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html