정의
- 인터넷에서의 정보를 암호화하여 송수신하는 프로토콜
- 다양한 종류의 "보안 통신"을 위한 프로토콜
- SSL에 기반한 기술
- 브라우저~서버 사이의 전송된 데이터를 암호화 하여 인터넷 연결 보안 유지
- 두 당사자가 기밀성과 데이터 무결성이 보장된 상태로 서로 식별/인증/통신 가능
작동 방법
- 신뢰할 수 있는 사람인지를 확인 + 도청 방지
- 전자 서명이 포함된 인증서 + 통신 내용 암호화
- 클라이언트-서버
1. 서로 어떤 TLS 버전 사용 가능한지 확인
2. 인증서를 사용해 서로 믿을 수 있는지 확인
3. 서로간의 통신에 쓸 암호 교환
4. 교환한 암호를 사용해 제3자가 도청 못하는 암호화된 통신
- 동작 순서
1. 인터넷 사이트는 자신의 정보/공개키를 인증기관에 제출
2. 인증기관은 검증을 거치고 사이트 정보와 공개키를 "인증기관의 개인키"로 암호화 (사이트 인증서)
3. 인증기관은 웹 브라우저에게 자신의 공개키를, 인터넷 사이트에게는 암호화한 인증서를 제공
Proxy
- 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 시스템
- 클라이언트 -- 프록시 -- 서버 이니까...
- 보안 / 트래픽 분산 등 장점 많음
Forward Proxy
-
- 클라이언트가 서버로 요청할 때 직접 요청 X
- 먼저 프록시 서버를 통해 요청
- 이후 인터넷
- 서버가 응답받은 IP는 프록시 서버 IP라 클라이언트 누군지 특정 X
- 프워드 포록시가 클라이언트의 요청을 긁어모아 요청/응답 해주고, 응답을 클라이언트에 forward
- 캐싱 가능하여 월등한 성능 향상 가능
- "정해진 사이트"만 안전하게 연결하는 등 웹 사용환경 제한도 가능
- 클라이언트의 요청을 모으고 관할하는 포워드 프록시!
Reverse Proxy
-
- 클라이언트가 서버 호출시 리버스 프록시 호출
- 리버스 프록시 서버가 서버를 요청하여 받은 응답을 클라이언트에게 전달
- 내부 인트라넷에 있는 서버 호출을 위해 인터넷 망에 있는 클라이언트가 리버스 프록시 서버에 요청하여 응답 받음
- 클라이언트는 리버스 프록시 호출해서 실제 서버 IP 특정 X
- 클라이언트들의 데이터를 Reverse Proxy에서 모두 받아 내부 서버에서 처리 후 클라이언트에게 전달
- 보통 기업의 네트워크...
- DMZ라고 하는 내부 네트워크와 외부 네트워크 사이에 위치
장점
1. 보안
- IP 특정 불가
2. 성능
- 캐싱/트래픽 분산 가능
3. 트래픽 분산
- 로드 밸런싱 제공
4. HTTPS
- 인증서 관리는 리버스 프록시 서버가 담당
- 뒤의 서버는 HTTP로 요청 쇼부
CORS
- [접근 제어 시나리오]
- Preflight 요청
- 사전 확인 작업
- 본 요청 보내기 전에 보내도 되는지 확인하는 작업
- OPTIONS 메서드를 통해 수행
- Origin: 요청 출처
- Access-Control-Request-Method: 서버 측 허가 메서드
- Access-Control-Request-Headers: 서버 측 허가 헤더
- Access-Control-Max-Age: preflight 응답 캐시 시간
- 응답 코드 200번대여야함
- 응답 body 비어있자
- CORS를 모르는 서버를 위해
- 처리 먼저 되기 전에 CORS 아는 놈인지 검증
- 단순 요청
- Credential Request
- 인증 관련 헤더를 포함할 때 사용하는 요청
- Access-Control-Allow-Credentials: true
- 인증이라서 Origin: * 은 안됨!!