AWS 배포 -(5) HTTPS 적용하기
이전 글
5. HTTPS 적용하기
** HTTPS -> TLS (SSL) **
HTTPS : HTTP Secure
- TLS (Transport Layer Security)를 적용하여 HTTP 요청과 응답을 암호화한 규약.
- TLS/SSL : 서버로 들어오는 요청을 요청을 한 사용자와 요청을 받는 서버 외에는 확인하기 힘들도록 데이터를 암호화하는 규칙
- HTTPS를 구현하지 않으면 > 주고받는 HTTP 요청이 모두 노출될 위험이 있다.
- 대칭키 암호화와 비대칭키 암호화 방식을 동시에 사용하여 안정성과 속도 확보!
1) 대칭키 암호화 : 같은 키를 사용하여 암호화.
- 암호화&복호화 빠름
- 자원 소모가 적음
- 암호문 공유하는 주체끼리 동일한 키를 갖고 있어야 함
2) 비대칭키 암호화 : 서로 다른 키를 사용하여 암호화
- 개인 키를 공개하지 않아 보안이 뛰어남
- 하드웨어 자원 소모가 큼
- 암호화&복호화 시간이 오래걸림
원리
핵 심 : 대칭키 암호화를 하기 위해 공유되어야 하는 비밀키를 비대칭키 암호화를 통해 공유한다 !!
1) C -> S 클라이언트는 서버에 최초로 요청을 보낼 때 > 안전한 연결을 요청한다. + 자신이 사용가능한 암호화 방식들을 서버에 보내준다.
2) S -> C 서버는 클라이언트가 전달해준 방식들 중 자신이 사용가능한 암호화 방식을 선택 > 그 정보를 인증서와 함께 전달한다.
3) C 클라이언트는 서버가 전송한 인증서(서버의 신분 증명+서버의 공개키)를 확인한다.
4) C -> S 클라이언트가 서버의 공개키를 사용해 임의의 값을 암호화하여 서버로 전달한다.
>> 이 암호화 시 > 서버만 알고있는 개인키를 사용해야만 그 값을 확인할 수 있다!!
5) S 전달받은 암호문을 자신의 개인키로 복호화 & 클라이언트가 생성한 임의의 값(대칭키 암호화 키로 활용)을 확인한다.
6) S -> C 서버가 클라이언트에게 대칭키로 암호화된 응답을 보내면 클라이언트가 같은 대칭키로 복호화 진행.
7) C -> S 클라이언트가 서버에 요청 보낼 때 대칭키로 요청을 보낸다.
==> 이렇게 하면 중간에 통신을 가로챈다 한들 내용 자체의 확인은 거의 불가능해진다.
** Certbot (무료 SSL 인증서) **
Certbot 사이트에서 어떤 환경에서 어떤 서버를 실행하고 있는지 입력하면 명령어 사용 방법이 나온다!
(snap이라는 다른 소프트웨어 관리 도구를 이용해 설치한다.)
1) snap 최신화 & 설치
sudo snap install core; sudo snap refresh core
sudo snap install --classic certbot // install certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot // prepare the certbot command
2) --nginx 옵션과 함께 실행
sudo certbot --nginx // Choose how you'd like to run Certbot
- 이메일 입력하기
- 이용약관/ 정기적 수신 동의 /TLS를 적용할 도메인 선택.
- 인증서를 받아와서 적용하는 과정
3) HTTPS 포트도 보안 규칙에 포함시키기.
4) 적용되었는지 브라우저로 접속해 확인~~
이 연결은 안전합니다! 아주 뿌듯하네용..
기나긴 배포 과정 완료...
당연 다시 하라면 다 까먹고 못하겠지...? ㅎㅎ
그래도 한번씩 한번씩 하다보면 더더 익숙해지겠지요. ^.^
'Programming > Cloud' 카테고리의 다른 글
S3 버킷 + cloudfront (0) | 2024.05.29 |
---|---|
3과목 데이터베이스 구축 데이터 전환 121 ~ 126 (2) | 2024.02.05 |
AWS 배포 -(4) 가비아 도메인 설정 (0) | 2024.01.17 |
AWS 배포 -(3) Nginx 설정 (0) | 2024.01.17 |
AWS 배포 -(2) 가상 컴퓨터에 자바설치/ 프로젝트 불러오기/ JAR파일로 스프링부트 실행 / EC2 보안설정 (0) | 2024.01.17 |