목차
1. HTTPS 란?
2. 내 서버 구조
3. HTTPS 적용
4. 작동 흐름
1. HTTPS 란?
HTTP + SSL/TLS 프로토콜을 이용해 데이터를 암호화하는 통신 방식.
장점
1. 데이터 탈취 방지
HTTP는 보안에 취약하다.
신용카드나 주민번호와 같은 정보가 탈취당할수 있다.
HTTPS는 데이터가 암호화 되기에 안전하다
2. 서버가 신뢰할수 있음을 보장
클라이언트 입장에서 통신할 서버를 믿을수 없다.
예를들어 클라이언트는 은행 웹사이트에 접속한줄 알았지만 피싱사이트일수도 있기 때문이다.
CA가 발급한 SSL 인증서가 있는 서버(웹사이트)는 안전하다고 인증되었기에 신뢰할수 있다.
3. 검색 엔진 최적화
검색 엔진에 웹사이트가 노출될 확률을 높일수있다
2. 내 서버 구조
내 프로젝트 인프라는 AWS Beanstalk으로 구성되어있다.
그리고 HTTPS가 적용되지 않은 HTTP만을 사용하는 상태였다.
내 ALB에 SSL/TLS 인증서를 등록하여 HTTPS를 적용할 것이다.
3. HTTPS 적용
적용순서는 다음과 같다
1. 도메인 생성
2. DNS 연결, 로드벨런서 주소로 라우팅 설정
3. CA 통해 SSL/TLS 인증서 발급받기
4. AWS Beanstalk 환경에 인증서 등록
1. 도메인 생성
위 사이트에서 무료 도메인을 발급받았다.(무료라서 여러 제한 있으니 조심)
나는
도메인이름예시.tk 라는 도메인을 발급받았다.
2. DNS 연결, 로드벨런서 주소로 라우팅 설정
AWS Route53 를 이용하여 연결을 설정하였다.
1. 호스팅 영역 생성을 클릭후 도메인 이름을 입력한다.
2. 생성 후 우측 하단의 값/트래픽 라우팅 대상을 확인한다. 네임서버의 주소들이다.
3. 도메인을 발급받은 곳에서 위의 네임서버 주소를 입력해준다.
4. 로드벨런서 주소로 라우팅 설정
2번 사진의 콘솔 화면에서 레코드 생성을 클릭한다.
나는 Beanstalk 환경의 로드벨런서 주소로 라우팅할것이므로 위와같이 설정한다.
이 과정이 끝나면 발급받은 도메인으로 내 서버에 접속이 가능하다.
3. CA 통해 SSL/TLS 인증서 발급받기
AWS ACM을 통해 AWS의 CA 기관에서 SSL/TLS 인증서를 발급받을수 있다.
1. 요청 클릭
2. 퍼블릭 인증서 요청 클릭
3. 도메인 이름 입력
4. 검증 방법으로 DNS 검증 클릭 - 이걸 눌러야 자동으로 인증서가 갱신된다.
이 과정이 끝나면 CA에서 검증 후 성공시 SSL/TLS 인증서가 발급된다.
4. AWS Beanstalk 환경에 인증서 등록
AWS Beanstalk 콘솔로 이동후, 구성의 로드벨런서를 클릭
현재는 HTTP만 사용중이므로, 위와 같이 설정되어있다.
리스너 추가 클릭.
HTTPS를 선택한다. 당연히 포트는 443이다.
SSL 인증서는 이전과정에서 발급했던것을 선택한다.
SSL 정책은 사진속 정책이 호환성 측면에서 권장된다.
이 과정이 끝나면 도메인에 HTTPS가 설정되며,
https://www.도메인이름예시.com 과같은 형태로 접속할수 있다.
4. 작동 흐름
일반적인 HTTPS 통신 과정이다. (RSA key exchange algorithm)
사진속 1~4 과정은
내가 앞서 서술한
1. 도메인 생성
2. DNS 연결, 로드벨런서 주소로 라우팅 설정
3. CA 통해 SSL/TLS 인증서 발급받기
4. AWS Beanstalk 환경에 인증서 등록
등의 과정이라 할수 있다.
이후 클라이언트가 내 도메인에 접속 요청을 보내면,
기존에는 TCP 3-way Handshake 이후 데이터를 주고받았지만,
이제는 SSL/TLS Handshake 가 추가된다.
사진의 5~11은 SSL/TLS Handshake 의 과정이다.
출처:
https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/concepts-webserver.html
'Dev > 개발일지' 카테고리의 다른 글
JWT 리프레시 토큰 적용하기 (0) | 2023.01.08 |
---|---|
테스트 코드 리팩토링 해보자 (0) | 2021.11.20 |
DB 구조 변경과 데이터 옮기기 (0) | 2021.11.16 |
AWS beanstalk에서 RDS 사용하려고 삽질 (0) | 2021.11.06 |
스프링 데이터 JPA, Query DSL 완강 (0) | 2021.07.05 |