[WEB] HTTPS 와 HTTP

Coodori·2023년 3월 31일
0

CherishU

목록 보기
13/29

문제 발생

FE는 Netlify를 사용하고 BE는 AWS EC2를 사용하고 있었다.
Netlify 같은 경우 https로 설정이 되어있었고 AWS EC2의 엔드 포인트 같은 경우 http로 설정이 되어있었다.
현재 백엔드는 DNS를 사용하지 않고 위의 이야기처럼 엔드 포인트를 사용하고 있었다.

원인

MixedContent를 차단하여 API를 받을 수 없었다.

Mixed Content(혼합 콘텐츠)란 보안되지 않은 HTTP 프로토콜을 사용하여 리소스 요청하는 경우 해커(공격자)가 네트워크 연결을 도청 하고 중간자 공격(man-in-the-middle)에 취약하므로 웹브라우저 자체에서 원천에 차단하는 기능을 추가하고 있다.

생각

그러면 둘 중에 한 곳을 https => http로 혹은 http => https로 변경해야 할 듯했다.
Https에서의 보안 이점, ReverseProxy를 생각하면 당연하게 BE가 DNS를 사용하여 HTTPS로 가는 방법이 좋을 듯했다.
중간에서 탈취하는 점(중간자 공격)을 막을 수 있다는 점이 가장 크다.

HTTPS란?

HTTPS는 TCP위에 SSL/TLS층을 추가형 전송되는 데이터를 암호화하고 인증하고 무결성 보장을 해주어 안전하게 만들어준다.

HTTP 와 거의 동일하지만 데이터를 주고 받는 과정에서 보안 요소가 추가가 되었다는 점이다.
고로 서버와 클라이언트 사이의 모든 통신 내용이 암호화가 된다.

TLS?
Transport Layer Security
전송 계층의 보안으로 기존의 SSL(Secure Socket Layer)에 기반한 프로토콜이다.
TLS는 공개키와 개인키가 있는 공개키 암호화 기술을 사용한다.

Hand shake 과정 이후로부터는 session key로 암호화된 데이터가 전송된다.

이러한 보안과정을 적용하려면 인증서를 발급받아 서버에 적용시켜야 한다. 인증서는 사용자가 접속한 서버가 우리가 의도한 서버가 맞는지를 보장하는 역할을 한다. 인증서를 발급하는 기관을 CA(Certificate Authority)라고 부른다. 공인인증기관의 경우 웹 브라우저는 미리 CA 리스트와 함께 각 CA의 공개키를 알고 있다.

암호화 방식

  • 대칭키 암호화
  • 비대칭키 암호화

여담으로 키워드 검색시 상위 노출되는 기준인 보안요소를 만족시킬수 있다.

물론 모든 텍스트를 암호화해서 주고 받으면 과부하가 걸려 속도가 느려질 수 있지만 중요한 사이트는 무조건 HTTPS로 관리한다.

위에서 설명한 방식이지만 동작방식이 글로 깔끔해서 한번 더 적어본다.

Reverse Proxy란?

클라이언트 요청을 대신 받아 내부 서버로 전달해주는 것을 리버스 프록시라고 한다.

  • 로드 밸런싱이 가능함
  • 캐싱
  • SSL 터미네이션
  • 압축
  • DDos 공격 완화

결론

BE에 DNS를 할당하여 HTTPS로 만들어서 기존 FE에 연결을 유지했다.

REFERENCE

https://narup.tistory.com/238
https://velog.io/@pjh612/HTTPS%EB%8A%94-%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EB%B0%B1%EC%97%94%EB%93%9C-%EC%96%B4%EB%94%94%EC%97%90-%EC%A0%81%EC%9A%A9%EB%90%98%EC%96%B4%EC%95%BC-%ED%95%98%EB%82%98
https://rachel-kwak.github.io/2021/03/08/HTTPS.html
https://sunrise-min.tistory.com/entry/HTTPS%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-TLSSSL-%EA%B9%8C%EC%A7%80-%EC%82%B4%ED%8E%B4%EB%B3%B4%EC%9E%90
https://sunrise-min.tistory.com/entry/HTTPS%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-TLSSSL-%EA%B9%8C%EC%A7%80-%EC%82%B4%ED%8E%B4%EB%B3%B4%EC%9E%90

profile
https://coodori.notion.site/0b6587977c104158be520995523b7640

0개의 댓글