Linux 톰캣 관련 포스팅 목록
2020.07.13 - [Linux/Tomcat] - 리눅스 우분투 tomcat 7 설치(Ubuntu, Tomcat, Install)
2020.07.15 - [Linux/Tomcat] - 리눅스 우분투 tomcat 7 80 포트 변경(ubuntu, tomcat, port)
리눅스 톰캣 HTTPS 서버 구성에 필요한 키스토어 생성하기
안녕하세요.
오늘은 https 서버 구성하는데 필요한 jks 키스토어 파일을 생성하는 방법에 대하여 알아보도록 하겠습니다
https는 기존의 평문으로 통신하는 프로토콜인 http에 SSL 보안 기능(secure)을 추가한 프로토콜을 의미합니다. 평문의 데이터를 인터넷 망을 통해 통신하게 되면 아무래도 중간자 공격이나 스니핑 등 악성 공격으로부터 중요 및 민감한 개인 정보 들을 노출하는 위험에 빠지게 됩니다.
하지만 https 통신을 수행할 경우 패킷들이 암호화되어 이러한 중간자공격(MITM), 스니핑 등에서 안전할 수 있습니다.
https 통신에서 암호화 및 부인방지 등에 필요한 것이 있습니다. 서버 측에서 자신의 서버에 대한 정보를 작성한 인증서를 지정하여 클라이언트와 통신하기 전에 이 인증서를 같이 전달합니다. 그러면 클라이언트는 자기가 접속하는 서버와 그 서버가 준 인증서 안에 암호화된 값을 풀어 진짜 그 서버기 맞는지 확인합니다.
간략하게 설명하여 공개키(PKI)를 사용하고 안전한 통신을 확보하는 것입니다.
이전 톰캣7 웹서버 구성 방식에 대하여 포스팅하였습니다. 이 포스팅에서 구성한 서버에 SSL을 적용하기에 앞서 반드시 필요한 키스토어 즉, jks 파일을 생성하는 방법에 대해 알아보도록 하겠습니다. 키스토어 파일을 인증서 파일로 변환하는 과정은 다음 포스팅에서 다루도록 하겠습니다.
키스토어 파일에서 p12 파일로 변환하고 여기서 개인키를 이용하여 공개키를 생성합니다. 이 공개키가 곧 인증서 역할을 수행하고 이 형식을 PEM 형식이라 합니다.
톰캣 웹서버 구성 방법은 아래 포스팅을 참고하시면 됩니다. 아래 예제는 리눅스 우분투 18.04 환경을 기준으로 작성하였습니다.
2020.07.13 - [Linux/Tomcat] - 리눅스 우분투 tomcat 7 설치(Ubuntu, Tomcat, Install)
키스토어 파일 생성하기
$ mkdir ~/keystore_example
$ cd ~/keystore_example
$ keytool -genkey -alias https_keystore -keyalg RSA -keypass test1234 -storepass test1234 -keystore https_keystore.jks
이름과 성을 입력하십시오.
[Unknown]: hong
조직 단위 이름을 입력하십시오.
[Unknown]: test
조직 이름을 입력하십시오.
[Unknown]: test
구/군/시 이름을 입력하십시오?
[Unknown]: seoul
시/도 이름을 입력하십시오.
[Unknown]: seoul
이 조직의 두 자리 국가 코드를 입력하십시오.
[Unknown]: kr
CN=hong, OU=test, O=test, L=seoul, ST=seoul, C=kr이(가) 맞습니까?
[아니오]: Y
Warning:
JKS 키 저장소는 고유 형식을 사용합니다. "keytool -importkeystore -srckeystore https_keystore.jks -destkeystore https_keystore.jks -deststoretype pkcs12"를 사용하는 산업 표준 형식인 PKCS12로 이전하는 것이 좋습니다.
$ ls
https_keystore.jks
라인 설명
1: 키스토어 생성 예제 테스트를 위한 작업 디렉토리를 생성합니다. 리눅스에서 "~/" 는 사용자의 홈 디렉터리를 의미합니다.
2: 홈디렉토리에 생성한 keystore_example 폴더로 이동합니다.
3: keytool 을 이용하여 키스토어를 생성합니다. keytool은 리눅스에 기본적으로 설치되어있습니다. 또한 전달되는 인자들은 아래와 같습니다.
-genkey: 키 생성 명령 옵션
-alias: 생성할 키스토어 파일의 별명 혹은 명칭, 식별자
-keyalg RSA: 키스토어 생성 시 공개키, 개인키 쌍을 생성할 때 RSA 알고리즘을 사용한다는 옵션
-keypass test1234: 키 파일의 패스워드. 본 예제에서는 비밀번호를 "test1234"로 설정
-storepass test1234: 키스토어 파일의 패스워드. 본 예제에서는 비밀번호를 "test1234"로 설정
-keystore https_keystore: 키스토어 파일명. 본 예제에서는 "https_keystore"로 파일명 설정
5 - 18: 키스토어 파일에 저장되는 키 소유자 정보를 입력하는 창입니다. 위 3번 라인 명령 실행 시 5번 라인과 같은 정보 입력창이 나타납니다. 각자 정보를 임의로 입력하시면 됩니다.
23: 생성된 키스토어 파일을 ls 명령어로 확인합니다.
키스토어 파일 내용 확인
$ cd ~/keystore_example
$ keytool -list -v -keystore https_keystore.jks
키 저장소 비밀번호 입력: test1234
라인 설명
2: 위 예제에서 생성한 https_keystore.jks 파일을 keytool 도구로 엽니다
3: 이전 파일 생성 시 입력한 키스토어 비밀번호인 "test1234"를 입력합니다.
마무리
오늘은 톰캣 서버에서 https 를 적용하기 위해 필요한 키스토어 파일 생성하는 방법에 대해 알아보았습니다.
다음 포스팅에서는 이렇게 만든 키스토어 파일을 실제 SSL 인증서로 변환하는 방법에 대해 알아보겠습니다.
관련 글
Linux 톰캣 관련 포스팅 목록
2020.07.13 - [Linux/Tomcat] - 리눅스 우분투 tomcat 7 설치(Ubuntu, Tomcat, Install)
2020.07.15 - [Linux/Tomcat] - 리눅스 우분투 tomcat 7 80 포트 변경(ubuntu, tomcat, port)