https 사용을 위한 SSL 사설 인증서 발급 및 톰캣 적용 방법
https 프로토콜을 사용하기 위해 유료로 구매하는 SSL인증서가 아닌 openssl을 이용해 자체 서명 발급한 인증서를 이용해 WAS 톰캣에 적용해 https 프로토콜을 사용하는 웹 사이트를 구현해봤습니다.
https 프로토콜
https 프로토콜을 말하기 전에 우선 http 프로토콜에 먼저 알아야겠습니다.
우리가 웹브라우저를 통해 네이버나 구글에 접속해서 콘텐츠를 보는 이러한 행동들은 모두 하나의 웹문서(html)을 바탕으로 합니다.
이런 웹문서를 클라이언트에게 보여주고 상호작용을 하기 위한 통신 규약을 http프로토콜이라고 하는데요.
이런 http에 보안 기능을 더한것이 https 프로토콜입니다. https 프로토콜은 SSL인증서를 발급받아 웹서버에 설치해서 사용할 수 있습니다.
대게 공인 인증된 SSL인증서는 유료로 구매해야 합니다.
저는 비용 발생없이 https 프로토콜을 사용할 일이 있어 자체 서명 인증서를 생성하고 그 인증서를 톰캣에 적용해보는 작업을 해봤습니다.
자체 서명 인증서 발급 과정
openSSL 자체 서명 인증서 발급
- 기본 설치 경로 - C:\Program Files\OpenSSL-Win64\bin
1. 개인키 발급
- openssl genrsa -out private_test.key 2048
- openssl genrsa -des3 -out private.key 2048
2. 공개키 발급
- openssl rsa -in private.key -out public.key
3. CSR 파일 발급
- openssl req -new -key private.key -out private.csr
- Country (C) - 국가코드 입력
- State or Province (ST) - 지역 이름(ex 경기도 충청남도 등)
- Locality (L) - 도시 이름
- Organization (O) - 회사 이름
- Organizational Unit (OU) - 부서명
- Common Name (CN) - 도메인 명
- Email Address - 관리자 이메일
- Challenge Password (선택 사항) - 일부 CA(인증 기관)에서 추가 비밀번호를 요구할 경우에 사용하기 위함.
- Optional Company Name (선택 사항) - 회사나 조직의 추가적인 명칭
위의 항목들은 영문으로 작성하면 되고, 주의할 사항 중 하나인 CN 항목인 도메인 명칭입니다.
여기에는 인증 받을 주소를 입력하면 되는데 www. blog. 과 같은 하위 도메인 명칭까지 써줘야 합니다.
4. CRT 만들기
- rootCA key 생성
- openssl genrsa -aes256 -out rootCA.key 2048
- 사용할 암호 입력
- rootCA CSR 생성
- openssl req -x509 -new -nodes -key rootCA.key -days 365 -out rootCA.pem
- 3번의 CSR 발급에 필요한 정보를 입력(임의 값으로 진행해도 됨.)
- openssl x509 -req -in private_test.csr -CA rootCA_TEST.pem -CAkey rootCA_TEST.key -CAcreateserial -out private_test.crt -days 365
days의 경우 인증서 유효기간과 같은데 365 이상을 입력하면 브라우저에서 위조된 인증서로 인식할 수 있으므로 되도록 365일 이내로 적어줘야 합니다.
위와 같이 완료를 하면 private_test.crt 파일이 생성되게 됩니다. 이제 생성된 인증서를 톰캣에 연동해 주면 됩니다.
사설 SSL 인증서 톰캣 연동
- openssl pkcs12 -export -in private_test.crt -inkey private_test.key -out .keystore -name tomcat
톰캣 server.xml에 파일에 구문 추가 |
개인 발급 SSL 사설 인증서 톰캣 연동 결과
공인 기관의 인증을 받은 SSL인증서를 설치한 사이트 |
인증서는 정상적으로 설치되었지만 인증을 획득할 수는 없습니다. 그러나CORS 정책 위반 규칙에는 예외가 발생해 정상적으로 사용할 수 있습니다. |