환경 구축에 앞서, TLS 1.3 환경 구축을 위해 웹 서버와 암호 라이브러리의 버전을 확인해야한다.
조사해본 결과, Apache 웹 서버의 경우 2.4.36 이상에서 TLS 1.3 지원이 된다.
이미 Apache 웹 서버가 pc 에 구축되어 있다 하더라도 버전이 2.4.36 이하라면 TLS 1.3 구축이 안 될수 있으니 확인이 필요하다.
나는 윈도우에 웹 서버를 설치하여 VM으로 접근한 후 트래픽을 캡쳐하는 방식으로 Apache 웹 서버를 구축하였다.
(웹 서버와 openssl는 설치가 되어 있어서 그 이후부터 진행하였으니 Apache 웹 서버 구축은 생략)
가장 먼저 Openssl 을 이용해 인증서 발급을 위한 개인키/공개키를 생성해 사용하였다.
(관리자 권한 powershell 에서 openssl.exe 실행 후 진행)
1. 개인키 발급
genrsa -des3 -out pricate.pem 2048 : 비밀번호 저장하여 개인키 생성
genrsa -out private.key 2048 : 비밀번호 없이 개인키 생성 (이걸로 사용)
2. 공개키 발급
rsa -in private.key -pubout -out public.key
3. CSR(인증 요청서) 생성
*CSR : SSL 인증의 정보를 암호화하여 인증 기관에 보내 인증서를 발급받게 하는 신청서
임의의 값 입력해주면서 넘어가면 된다.
4. CRT(인증서) 생성
CSR까지 만들면, CRT 는 그냥 만들 수 있지만 사설 CA 에서 인증까지 받은 인증서를 발급할 수 있다.
가장 먼저 인증서에 서명을 해줄 root CA가 필요하다.
4-1. rootCA.key 생성
genrsa -aes256 -out rootCA.key 2048
4-2. rootCA 사설 CSR 생성
rootCA.key를 사용하여 1년 짜리 rootCA.pem을 생성해보자.
req -x509 -new -nodes -key rootCA.key -days 365 -out rootCA.pem
4-3. CRT 생성
위에서 만든 CSR을 커스텀 CA 인 rootCA의 인증을 받아 private.crt 로 생성한다.
x509 -req -in private.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out private.crt -days 365
인증서 발급 완료
이렇게 발급 받은 인증서를 적용하기 위해 httpd-ssl.conf 파일을 수정하고,
TLS 1.3 프로토콜을 추가한다.
그리고
#Include conf/extra/httpd-ssl.conf
#LoadModule ssl_module modules/mod_ssl.so
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
주석을 해제하여 새로 추가한 ssl/tls 프로토콜이 적용되도록 설정한다.
이후
httpd.exe -k restart
httpd -k stop
httpd -k start
명령어로 서버 재 시작을 진행한 후 웹 브라우저에서 TLS1.3 설정을 확인해보면
Apachd 웹 서버에 TLS 1.3 구축 성공 !
다음 포스팅에서 Nginx 웹 서버 환경 TLS 1.3 구축까지 해볼 예정이다.
참고
'NETWORK Security > 보안 프로토콜' 카테고리의 다른 글
TLS1.3 (6) - 환경 구축 (Nginx-2) (0) | 2020.12.29 |
---|---|
TLS1.3 (5) - 환경 구축 (Nginx-1) / nginx, openssl RPM update (0) | 2020.12.29 |
TLS1.3 (3) - TLS1.3 과 기존 TLS 차이점 (0) | 2020.12.29 |
TLS1.3 (2) - SSL/TLS Handshake (1) | 2020.12.29 |
TLS1.3 (1) - cipher suite, 키 합의 프로토콜, 완전 순방향 비밀성(PFS) (0) | 2020.12.22 |