Backend Dev./Project Impl

Spring Boot 개발 노트 : 프로젝트 HTTPS 적용 1

문괜 2023. 12. 7. 19:00
반응형

Spring Boot의 경우 8080번 Port를 사용하고 React 같은 경우 3000번 Port를 사용한다. HTTP의 경우 80번 Port를 사용하고 SSH의 경우 22번 포트를 사용한다.

 

그러면 HTTPS의 경우 몇 번 Port를 사용할까? 그리고 여기서 말하는 Port는 무엇일까? 마지막으로 HTTPS와 HTTP의 차이 그리고 어떻게 우리가 만든 프로젝트에 HTTPS를 적용할 수 있을까?

먼저 Port 번호란 무엇일까?

서버와 클라이언트 사이 혹은 서버와 서버 사이의 통신을 할 때 사용 되는 요청과 응답이 지나가는 '도로'라고 생각하면 된다. 정해진 포트로 해당하는 요청이 들어오고 포트번호는 중복될 수 없다. IP주소와는 다른 개념이다. IP 주소는 나의 서버가 포함된 기기의 위치를 표시한다면 Port의 경우 서버 안의 특정 application을 지목한다고 생각하면 된다. 대부분의 Application이 고유의 포트 번호가 있고 다를 경우 요청들을 특정 Port번호에서 다른 Port번호로 옮겨 주는 과정이 필요하다. 예를 들어 React의 경우 3000번 포트를 사용하지만 Spring Boot의 경우 8080번 포트를 사용한다. 그래서 이런 차이를 극복하기 위해 CORS(Cross-Origin Resource Sharing)이 있다.

 

아래는 대표적인 예약된(Reserved) Port번호다.(아 그냥 이런게 있구나 하면 된다. 그래도 색깔 쳐져 있는 부분은 눈에 익혀두면 좋다.)

요청 종류 포트번호 용도
HTTP 80 암호화 되지 않은 웹 요청
HTTPS 443 암호화된 웹 요청
FTP 32 File Transfer Protocol
SSH 22 SSH통신을 위한 요청(Secure Shell)
SMTP 25 이메일 전송
POP3 110 이메일 수신(POP3를 이용한)
IMAP 143 이메일 수신(IMAP를 이용한)
DNS 53 DNS 전용(Domain Name System)
MySQL 3306 MySQL과의 연결을 위해 사용
RDP 3389 Remote Desktop Protocol 
Spring Boot 8080 Spring Boot 기본 Port 번호
React 3000 React 기본 Port 번호

 

HTTP와 HTTPS는 무엇일까?

HTTP와 HTTPS의 가장 큰 차이는 마지막 S에 있다. Secure 즉 보안에 특화 돼있는게 HTTPS다.

아래의 링크를 타고 들어가서 구체적인 내용을 확인하자.

도대체 HTTP는 뭘까요?

 

도대체 HTTP는 뭘까요?

여태까지 저의 글들을 보면 많이 보인 단어가 있을 겁니다. 그중 하나가 바로 HTTP인데요. 오늘은 HTTP가 도대체 뭔지에 대해 설명드리겠습니다. Hypertext Transfer Protocol HTTP는 사용자의 웹브라우저와

youcanbeable.tistory.com

도대체 HTTPS는 뭘까요?

 

도대체 HTTPS는 뭘까요?

저번에 말씀드린 HTTP의 가장 큰 문제는 통신의 내용을 텍스트 형태로 그대로 전달한다는 문제가 있습니다. 그럼 왜 이런 일이 발생할까요? 첫 번째 이유로는 HTTP로 전송되는 Request는 텍스트의 형

youcanbeable.tistory.com

여기서 핵심 적인 차이를 말하자면 HTTP는 Application Layer를 사용하고 HTTPS는 Transport Layer를 사용한다는 점이다. 

HTTPS에서 SSL/TLS를 통해서 HTTP요청을 암호화 하고 요청이 올바른 곳에서 왔다는 서버에게 확신을 주는 거와 같다. 

 

그럼 위의 내용과 HTTPS의 특징을 생각해보면 총 두 가지가 필요하다는 결론에 다다른다. 

 

  1. 특정 Port에서 온 요청을 다른 Port로 옮겨 주는 장치
  2. SSL/TLS와 같이 요청을 암호화 하는 장치

이 두가지가 필요하다. 그래서 첫 번째를 위해서 Nginx를 사용하고 SSL/TLS를 위해서 Certbot을 사용할 예정이다.

 

다음편

Spring Boot 개발 노트 : 프로젝트 HTTPS 적용 2

 

* 항상 정확한 정보를 드리고 싶지만 실수가 있을 수도 있습니다!

* 실수를 찾게 되거나 질문이 있으시면 댓글 달아주세요!!

반응형