HTTP(Hypertext Transfer Protocol) 는 클라이언트와 서버 간 통신을 위한 통신 규약이다. 하지만, HTTP는 암호화되지 않는 평문 데이터를 전송하기 때문에 제 3자가 정보를 조회할 수 있다는 위험이 있다. 이를 해결하기 위해서 HTTPS가 등장했다.
HTTPS(Hyertext Transfer Protocol Secure) 는 HTTP에 데이터 암호화가 추가된 것이다. 암호화된 데이터를 전송하기 때문에 제 3자가 볼 수 없도록 할 수 있다.
적용 방안
HTTPS를 적용하기 위해서는 인증된 기관(Certificate Authority, CA) 에게 인증서를 발급받아야 한다. CA에 인증서를 요청하면 CA 이름, 서버의 공개키, 서버의 정보를 활용하여 인증서를 생성하고 이를 CA 개인 키로 암호화하여 서버로 전송한다. 이때 인증서는 CA 개인 키로 암호화되니 신뢰성을 확보할 수 있다. 이러한 인증서를 서버측에서 발급받으면 HTTPS를 적용할 수 있다.
동작 원리
클라이언트가 서버로 최초로 요청할 때 암호화 알고리즘, 프로토콜 버전, 무작위 값을 전달한다. 이를 받은 서버는 클라이언트에게 암호화 알고리즘, 인증서, 무작위 값을 전달하며, 클라이언트는 서버의 인증서를 CA의 공개키로 복호화하여 검증한다. 검증이 끝난 이후에는 클라이언트와 서버에서 생성된 무작위 값을 조합하여 Pre Master Secret 값을 생성하여 서버 공개키로 암호화하여 전달한다.
서버는 전달받은 암호화된 데이터를 개인 키로 복호화하여 Pre Master Secret를 얻는다. 클라이언트와 서버는 일련의 과정을 통해 Pre Master Secret를 Master Secret으로 변경하고, 해당 정보를 이용해 세션 키를 생성한다. 이러한 과정을 TLS 핸드 쉐이크라고 하며, 이후부터 클라이언트와 서버는 세션 키를 활용한 대칭키 암호화 방식으로 데이터 송수신을 수행한다.
'Back-End' 카테고리의 다른 글
다중 서버 환경에서 세션 기반 인증 방식을 사용하는 경우 발생할 수 있는 문제점 (0) | 2025.04.14 |
---|---|
SOLID 원칙 (0) | 2025.04.11 |
MultipartFile vs Resource (0) | 2025.04.07 |
WAS, 웹 서버 차이점 (0) | 2025.04.07 |
자료구조 스택 (0) | 2025.04.07 |
댓글