SSL 인증서란 클라이언트와 서버간의 통신을 제 3자가 보증을 해주는 문서이다.
클라이언트가 서버에 접속하면 서버는 클라이언트에게 인증서를 전달하면 클라이언트는 이 인증서를 보고 신뢰할 수 있는 사람인지 확인 후 데이터를 보내는 등 다음 절차를 진행한다.
여기서 보통 SSL을 잘 몰랐다. 크롬이나 브라우저창에 www 또는 https를 볼 수 있다. 여기서 HTTPS는 HTTP와 TLS가 조합된 프로토콜만을 말한다. 여기서 TLS는 SSL의 후속 버전이지만 아직 SSL이 더 많이 사용되는 용어같다. 그렇지만 일단 둘 다 기억은 해두자!!
SSL을 쓰는 이유를 정리해보면 전달되는 내용이 다른 사람에게 노출되는 것을 막을 수 있으며 접속하는 클라이언트가 신뢰할 수 있는 서버인지 알 수 있고 전달되는 내용이 변경되는 것을 막을 수 있다.
통신 단계는 3단계다.
1. 핸드셰이크 2. 전송 3. 종료
여기서 가장 중요한건 핸드셰이크다. 헨드셰이크는 공개키와 대칭키 2가지 방법을 함께 사용한다.
1. Client Hello : 서버에 접근하여 클라이언트는 현재 자신이 가능한 암호화 방식과 랜덤 데이터를 서버에게 전송한다.
2. Server Hello : 서버는 클라이언트에게 제시한 암호화 방식 중 하나를 선정하여 알려주고 서버의 인증서를 전달한다. 또 서버에서도 랜덤 데이터를 생성하여 전달한다.
3. Client Pre Master Secret 생성 : 클라이언트는 자신이 가지고 있는 CA 리스트에서 서버가 보낸 인증서를 복호화 한다. 만약 성공 했을 시 클라이언트와 서버가 전송한 랜덤한 데이터를 조합하여 Pre Master Secret 키를 생성한다. 그 후 인증서에 있는 공개키를 이용하여 Pre Master Secret 키를 암호화 하여 서버로 전송한다. (이 때 Pre Master Secret는 절대 노출되면 안된다.)
4. Server Pre Master Secret 암호화 : 서버는 Pre Master Secret 키를 자신의 비밀키로 복호화하여 클라이언트와 서버는 서로 Pre Master Secret 키를 공유한 상태가 된다.
5. Session Key 생성 추후 Pre Master Secret 키를 이용하여 Master Secret 키를 만들고 Session Key를 만들어 세션을 형성하고 대칭키 방식으로 데이터를 주고 받는다.
'IT > general' 카테고리의 다른 글
[UUID] Universally Unique Identifiers - 범용 고유 식별자 (0) | 2022.02.09 |
---|---|
로깅(Logging)? (0) | 2021.12.14 |
[방화벽] 기본 포트 차단 (0) | 2021.11.22 |
[VSCode] 원격 SSH 접속 (0) | 2021.10.08 |
[IDE] 이클립스 설치 (0) | 2021.06.03 |