웹에서 https 연결을 지원하기 위해서는 http 연결에 필요한 TCP 연결 외에 TLS handshake라는 과정이 추가로 필요합니다. TLS란 무엇이고 handshake는 어떻게 일어나는지 간단히 알아보겠습니다.
TLS는 Transport Layer Security로 TCP handshake(3-way handshake)가 일어나고 난 뒤, TLS handshake를 통해 연결됩니다.
TLS는 인터넷 상의 커뮤니케이션을 위한 개인 정보와 데이터 보안을 용이하게 하기 위해 설계된 보안 프로토콜입니다. 주요 사례는 웹 사이트를 로드하는 웹 브라우저와 같이 웹 응용 프로그램과 서버 간의 커뮤니케이션을 암호화하는 것입니다.
TLS는 SSL(Secure Socket Layer)라고 불리는 이전의 암호화 프로토콜에서 발전한 것입니다.
HTTPS는 HTTP 프로토콜 상위에서 TLS 암호화를 구현한 것으로 모든 웹 사이트와 다른 웹 서비스에서 사용됩니다.
TLS는 무엇을 합니까?
TLS 프로토콜은 암호화, 인증, 무결성이라는 세 가지 주요 요소를 달성합니다.
웹 사이트나 응용 프로그램이 TLS를 사용하려면, 원본 서버에 TLS 인증서가 설치되어 있어야 한다.
인증 기관이 도메인을 소유한 사람 혹은 비즈니스에 TLS 인증서를 발행한다.
인증서는 서버의 공개 키와 더불어 누가 도메인 소유자인지에 대한 중요한 정보를 포함한다.
이 두가지는 모두 서버의 신원을 확인하는 데 중요합니다.
그리고 TLS는 TLS handshake로 알려진 일련의 순서를 통해 초기화된다.
TLS 핸드셰이크의 정확한 단계는 사용되는 키 교환 알고리즘의 유형과 커뮤니케이션 양측에서 모두 지원하는 암호 제품군의 유형에 따라 달라진다. 대부분 RSA 키 교환 알고리즘이 사용된다.
Hello 메시지를 전송하면서 핸드셰이크를 개시합니다. 이 메시지에는 클라이언트가 지원하는 TLS 버전, 지원되는 암호 제품군, 그리고 클라이언트 무작위라고 하는 무작위 바이트 문자열이 포함된다.TLS(SSL) 인증서, 서버에서 선택한 암호 제품군, 그리고 서버에서 생성한 또 다른 무작위 바이트 문자열인 서버 무작위를 포함하는 메시지를 전송한다.검증합니다. 이를 통해 서버가 인증서에 명시된 서버가 맞는지 확인합니다.예비 마스터 암호라고 하는 무작위 바이트 문자열을 하나 더 전송합니다. 예비 마스터 암호는 공개 키로 암호화되어 있으며, 서버가 개인 키로만 해독할 수 있습니다.예비 마스터 암호를 해독합니다.클라이언트 무작위, 서버 무작위, 예비 마스터 암호를 이용해 세션 키를 생성합니다. 모두 같은 결과가 나와야 합니다. 완료메시지를 전송합니다.완료메시지를 전송합니다.모든 TLS handshake는 비대칭 암호화(공개 키와 개인 키)를 사용하지만, 세션 키를 생성하는 과정에서 모두가 개인 키를 사용하는 것은 아닙니다. (임시 Diffie-Hellman 핸드셰이크의 경우처럼)