
SSL이 적용된 URL의 프로토콜은 https:// 로 시작한다.
이는 http:// 에 보안(Secure)을 의미하는 s가 붙은 것이다.
SSL(Secure Sockets Layer) ?
SSL(Secure Sockets Layer)은 암호화 기반의 인터넷 보안 프로토콜 이다.
다시 말해, 웹 서버와 클라이언트 통신의 암호화 프로토콜 을 의미한다.
Netscape가 1995년 처음으로 개발했으며,
이는 개인정보 보호, 인증, 데이터 무결성을 보장하기위해 인터넷 통신에서 제공된다.
SSL 없이 통신을 하는 경우, 평문으로 작성된 Plain Text가 그대로 전송되기 때문에 누군가 통신 패킷을 탈취한다면 사용자의 개인정보나 민감한 정보들이 모두 노출될 수 있게 된다.
이러한 문제발생을 기술적으로 해결하기 위해
SSL로 통신패킷을 암호화 하면 요청을 암호화 하여 보내기 때문에 통신 패킷이 탈취되어도 복호화 키가 없으면 사용자의 정보를 알 수 없어 정보 노출이 방지된다.
TLS(Transport Layer Security) ?
SSL의 개념을 찾다보면 TLS라는 용어도 접하게 되는데,
SSL은 현재 사용 중인 TLS(Transport Layer Security) 암호화의 전신이다.
SSL은 1996년 3.0 버전의 출시 이후, 보안의 취약점으로 인해서 현재는 퇴출된 상태이다.
TLS는 국제 인터넷 표준화 기구(IETF)에서 개발한 것으로, SSL 3.0의 보안취약점을 보완한 통신 보안 프로토콜이다.
사실상 SSL의 취약점을 보완한 것이 TLS 이고 현재
인터넷에 적용되는 모든 통신 보안 프로토콜은 TLS인데,
여전히 이를 'SSL 암호화' 로 부르는 사람들이 많아 SSL 로 불리고 있는 것 이다.
SSL(TLS) 의 특징
암호화: 통신 데이터의 암호화로 전송되는 데이터를 숨겨 패킷 탈취 시 에도 데이터가 안전
신뢰성 인증: SSL 인증서를 통해 도메인의 신뢰성을 검증 및 보장
무결성 : 데이터가 위조되거나 변조되지 않았는지 확인
SSL(TLS) 의 작동 원리
SSL이 통신하는 일련의 과정을 HandShake라고 한다.
클라이언트와 서버 간 요청과 응답을 반복하면서 일을 수행한다.

먼저 클라이언트에서 해당 서버로 요청을 보낸다.
요청에 포함되어 있는 주요정보는 난수데이터, 암호화 프로토콜 정보, 세션아이디, 암호화 기법 등이 있다.
해당 정보들로 서버는 클라이언트를 식별하고 인지한다.
서버는 ClientHello 요청을 받은 후, 해당 요청 정보를 담아 클라이언트에게 되돌려 보낸다.
다시 보내는 정보에 포함된 정보는 요청 시 들어온 정보와 다르며,
난수데이터, 서버가 사용할 암호화 기법, 인증서(CA/ 도메인/ 공개키) 와 같은 것 들 이다.
인증서 정보와 함께 서버의 암호화 통신을 위해 서버 공개키가 전달되는데, 공개키로 데이터를 암호화 하게되면 서버는 이것을 개인키로 복호화 하고 요청을 분석 할 수 있다.
클라이언트는
서버가 보낸 인증서가 신뢰할 수 있는 것인지 인증서를 검토한다.
해당 인증서에 문제가 있으면 브라우저에서 경고페이지가 뜬다.
1, 2 단계 과정에서 송수신한 난수 데이터를 조합 후 Premaster Secret가 생성된다.
그리고 이것을 ServerHello 단계에서 전달받은 공개키로 암호화 한다. 이때 이 데이터는 서버가 가진 개인키로만 복호화가 가능하고 탈취가 시도되어도 내용은 보호된다.
서버는 수신 데이터를 복호화 하고 클라이언트와 동일한 Premaster Secret 을 저장 할 수 있다.
보유하고 있는 Premaster Secret 를 통해 Master Secret, Session Key를 생성한다.
이 과정에서 클라이언트와 서버가 동일한 키를 갖게 되므로 서로 암호화 통신이 가능하게 된다.
데이터 송수신 시 필요한 데이터는 저장되어 있는 Session Key 를 통해 대칭키 암호화 방식을 사용하여 암호화/복호화로 통신한다.
클라이언트와 연결이 끊기게 되면 사용되었던 Session Key는 폐기된다.