SSL 인증서를 만들어주는 민간기업들을 CA(Certificate Authority)라고 한다. CA는 신뢰성이 있는 공인된 기업들만 참여할 수 있다. 대표적으로 무료 SSL 인증서를 제공해주는 비영리기관으로 Let's Encrypt, Cloud Flare 등이 존재하고, 유료인 경우도 있다.
제 3자(CA)를 통해 발급받은 SSL 인증서를 통해 클라이언트와 서버가 암호화된 데이터를 송수신하는 방식을 말한다.
사실 SSL 프로토콜은 1996년 3.0 버전 이후 업데이트가 이루어지지 않는 상황이고, 여러 취약성이 발견되어 앞으로 사라지게 될 것으로 여겨진다. 실제로 현재 SSL이 일컫는 것은 사실상 TLS 보호를 의미하는 것으로 용어에 약간의 혼란이 있다.

1. 클라이언트가 서버에 접속하며 아래 정보를 전송한다 (Client Hello)
2. 서버가 Client Hello에 대한 응답으로 Server Hello를 보낸다
3 - 1. 클라이언트가 서버가 전달한 인증서를 확인
클라이언트는 서버로부터 전달받은 인증서가 CA에 의해 발급된 것인지 확인하기 위해 클라이언트에 내장된 CA 리스트를 확인한다.
인증서가 CA에 의해 발급된 것인지 확인하기 위해 클라이언트에 내장된 CA의 공개키를 이용하여 인증서를 복호화한다.
복호화에 성공했다면 인증서는 CA의 개인키로 암호화된 문서임이 보증된 것으로 간주되고, CA 리스트에 인증서가 없다면 경고 메세지를 출력한다.
3 - 2. pre master secret 공유 (공개키 방식)
클라이언트는 서버가 생성한 랜덤 데이터와 클라이언트가 생성한 랜덤 데이터를 조합해서 pre master secret이라는 키를 생성하고, CA에 내장된 서버의 공개키로 pre master secret 값을 암호화해서 서버로 전송하게 되면서 서버와 클라이언트가 pre master key를 안전하게 공유한다.
이후 서버에서는 pre master secret 값을 master secret 값으로 만들고, 이 master secret을 통해 session key를 생성한다. 바로 이 session key 값을 이용해서 서버와 클라이언트는 세션 단계에서 데이터를 대칭키 방식으로 암호화한 후에 주고 받게 된다.
실제로 데이터를 주고받는 단계에 해당한다.
세션 단계에서의 핵심은 session key 값을 이용하여 대칭키 방식으로 암호화한다는 점이다.
공개키 방식이 많은 컴퓨팅 파워를 사용하기 때문에, 핸드쉐이크 이후 매 데이터 전송마다 공개키 방식을 사용하면 매우 큰 비용이 들게 된다. 반대로 대칭키는 암호를 푸는 열쇠인 대칭키를 상대에게 전송해야 하는데, 암호화가 되지 않은 인터넷을 통해서 키를 전송하는 것은 위험하기 때문이다.
따라서 공개키 방식으로 대칭키를 암호화하고, 실제 데이터를 주고 받을 때는 대칭키를 이용해서 데이터를 주고 받는 방식을 채택하였다.

HTTP는 클라이언트와 서버 사이에 암호화되지 않은 방법(평문)으로 데이터를 통신하기 때문에 감청 혹은 데이터 변조의 위험이 존재한다. 따라서 보안을 강화하기 위해 하부에 SSL 계층을 두어 네트워크로 보내지는 모든 HTTP 요청을 암호화하는 HTTPS 방식이 도입되었다.
웹사이트가 SSL/TLS 인증서로 보호되는 경우 HTTPS가 URL에 표시된다. 사용자는 브라우저 표시줄의 자물쇠 기호를 클릭해 발급 기관 및 웹사이트 소유자의 상호를 포함한 인증서의 세부 정보를 볼 수 있다.
구글 공식 문서에 따르면, TLS(전송 계층 보안)는 Netscape에서 개발한 보다 안전한, 발전된 SSL이라고 한다.
TLS에 대한 자세한 내용은 아래 링크를 참조
https://www.cloudflare.com/ko-kr/learning/ssl/transport-layer-security-tls/
https://www.digicert.com/kr/what-is-ssl-tls-and-https
https://raonctf.com/essential/study/web/ssl_tls