본문 바로가기
백엔드

HTTPS 환경 및 구축 방법

by 하_영 2023. 5. 25.

클라이언트와 서버의 통신과정

일반적으로 클라이언트에서 시작되는데, 클라이언트가 서버에 HTTP요청을 보내면 서버는 그 요청을 받아들이고 응답을 반환한다.

요청하고 응답하는 데이터는 HTTP형식으로 정의되고 이 정의된 HTTP메시지는 TCP/IP를 통해서 전송처리된다.

 

 

 

HTTP요청을 보낼때, 요청 헤더에 클라이언트의 IP가 노출되기 때문에 보안 이슈가 생길 수 있으며

이를 방지하기 위해 HTTPS 프로토콜을 사용하면 요청메시지와 응답메시지가 암호화되어 전송되기때문에 중간에 제3자가 정보를 가로채어 확인하는것을 막을 수 있다.

📌HTTPS는 SSL/TCL프로토콜을 사용해서 통신 내용을 암호화한다.

 

클라이언트 - 프록시 - 웹서버

 

프록시 서버를 사용하면 위와 같은 문제점을 해결할 수 있는데, 프록시 서버는 클라이언트와 서버의 중계자 역할을 하기때문에, 클라이언트의 IP가 서버에 노출되지 않는다.

 

그러나 프록시 서버를 거치면서 통신속도가 느려질수 있다는 단점이 있다.

프록시 서버를 사용하면서 HTTPS프로토콜을 사용하려면 프록시서버 도메인의 SSL 인증서, 클라이언트 도메인의 인증서, 서버 도메인의 인증서, 각 1개씩 필요하며 각각 설치를 해주어야 한다.

하지만, 프록시 서버가 클라이언트와 서버의 중계 역할만 하는 경우에는 프록시SSL인증서를 클라이언트와 서버의 인증기관(CA)의 인증서 목록에 추가하는 방식으로 프록시서버에서 SSL인증서를 설치하는 번거로움을 없앨 수 있다.

 

 

클라이언트 - 웹서버

만약 클라이언트와 서버가 같은 도메인을 사용한다면 프록시 서버를 사용하지 않아도 안전하게 통신이 가능한데, 클라이언트-서버 환경에서 HTTPS를 사용하면 된다.

HTTPS를 사용하려면 클라이언트와 서버 각각의 인증서를 발급받아, 각각 설치를 해줘야 한다. 이때 클라이언트와 서버가 같은 도메인을 사용하기때문에 하나의 인증서로 둘 다 사용이 가능한데, 이것을 단일 인증서라고 한다.

단일 인증서로 HTTPS를 사용하려면 클라이언트와 서버 각각 인증서를 설치해줘야한다.

프론트의 정적 컨텐츠를 웹브라우저에게 제공하기 위해서 NGINX를 사용하고 이 NGINX의 설정파일에서 SSL인증서를 등록할 수 있다.

 

 


 

클라이언트와 서버가 같은 도메인(IP)을 사용할때, 단일 인증서로 HTTPS 프로토콜 사용하는법 

 

  • 클라이언트

https://hayoung-dev-story.tistory.com/31

 

NGINX로 프론트서버에 SSL인증서 등록하기

📌http로 연결을 해둔 상태에서 시작 https://hayoung-dev-story.tistory.com/30 [윈도우] AWS EC2인스턴스 생성 및 서버 배포(Nginx, PM2),403 forbidden 해결 방법 AWS에서 EC2 인스턴스 생성합니다. 이름을 적고 원하

hayoung-dev-story.tistory.com

 

  • 서버

https://hayoung-dev-story.tistory.com/32

 

Node.js 로 https서버 생성하고PM2로 실행하기(404에러)

📌http로 연결을 해둔 상태에서 시작 https://hayoung-dev-story.tistory.com/30 [윈도우] AWS EC2인스턴스 생성 및 서버 배포(Nginx, PM2),403 forbidden 해결 방법 AWS에서 EC2 인스턴스 생성합니다. 이름을 적고 원하

hayoung-dev-story.tistory.com