728x90

HTTPS 는 (HyperText Transfer Protocol over Secure Socket Layer) 로써

HTTP의 보안이 강화된 버전이다.

 

HTTPS는 통신의 인증과 암호화를 위해 넷스케이프 커뮤니에션즈 코퍼레이션이 개발했고, 전자상거래에서 널리쓰인다.

 

HTTPS는 소켓 통신에서 일반 텍스트를 이용하는 대신에, SSL이나 TLS프로토콜을 통해 세션 데이터를 암호화 한다.

 

( HTTP의 기본포트는 80 HTTPS의 기본포트는 443이다. )

ㄴ 최근 스프링부트 프로젝트를 개발진행하면서 HTTPS를 적용시킬려는과정에서 HTTP의 포트를 8080 , HTTPS의 포트가 8443 인 상태에서 JAR파일을 개인서버인 라즈베리파이에 배포한적이있는데 기본포트가아닌 다른 포트를 사용할 경우 URL에 포트를 명시해주어야만 한다. 

 

즉, 80포트나 443포트를 사용하는게 아니라면 www.examplce.com:8443/$request_uri 처럼 포트번호를 url 뒤에 명시해줘야하는것이다.

 

HTTP는 TCP를 기반으로 하는 프로토콜이고 SSL과 TLS(SSL 강화버전) 이라는 프로토콜을 사용하여 데이터를 암호화한다.

 

암호화 알고리즘(Cipher[암호] Suite[모음])

 

1. SSL Handshake는 암호화 알고리즘 결정과 대칭키(비밀키) 전달을 위해 사용한다.

2. SSL Handshake.의 첫단계, Client가 'Client Hello'로 협상을 시작할 때 자신이 사용 가능한 'Cipher Suite'를 쭉 나열한다.

3. Server가 'Server Hello'를 통해 자신이 고른 'Cipher Suite'를 전달한다.

 

출처: https://aws-hyoh.tistory.com/47

SSL HandShake를 통해서 결국 이루고자 하는것은 (대칭키(비밀키)를 서버에게 전달하기위한 방법(알고리즘) 선택을 의미.

 

인증서 검증은 인증기관인 CA가 한다.

 

CA는 2계층 혹은 3계층의 구조를 형태를 뛰고있음(보안때문에)

 

1. Root CA(최상위 기관)

2. Intermediate CA (중간기관)

 

SSL 인증서 생성하는 순서

1. 서버의 각종정보  공개키를 Intermediate CA에 제출

2. 줄여서 ICA라고하겠음 ICA는 자신의 개인키로 암호화

3. ICA -> RCA(ROOT CA)에 자신의 공개키와 아까 정보들을 제출

4. RCA가 받은 정보들을 다시 암호화(서명) 

 

브라우저는 (주요인증기관의 리스트와 공개키를 이미 보유중)

 

서버의 개인키를 해커에게 탈취당하면 (해독된 대칭키)를 통해 그동안 저장해온 모든 패킷을 복호화할수있다고함)

현재의 데이터 뿐만 아니라 과거의 데이터 모두를 탈취당한다.

(개인키 관리를 잘해야함)

 

개인 스프링프로젝트에 HTTPS를 구현하게되면서 관련 지식을 공부하게되었다..

 

너무 딮하게는 공부하지않았지만 대충 돌아가는 흐름에대한 이해가 되었다.

 

 

728x90

'네트워크' 카테고리의 다른 글

표준 입력,출력,에러 / 파일 디스크립터  (0) 2022.02.25
[쉘 스크립트] 특수 문자  (0) 2022.02.23
프록시  (0) 2022.02.22
SSL / TLS protocol and Cipher suite  (0) 2022.02.18

+ Recent posts