앞에서 확인했듯이 SSL 통신은 Client 에서 Server 에 대한 검증을 수행한다.

하지만 Server 측에서의 Client에 대한 검증과정은 별도 존재하지 않는다. 

 

일반적인 웹서비스에는 해당되지 않으나, Server 측에서 제한된 Client 만 

접속을 허용하기 위해서 Client 검증을 해야 한다면 MTLS (Mutual TLS) 를 사용하는 것이다. 

즉, Client 에서 접속하는 Server 에 대한 검증과 Server 에서 Client 에 대한 검증을

서로 하는 것이다. 

 

아래 통신과정을 살펴보자

MTLS 통신과정

SSL 통신과정과 유사하나 몇개 추가된 부분이 보인다.

 

Certificate Request

Client 에게 인증서를 제공해달라고 요청하는 역활이다. 

이 메세지를 받은 Client 는 Server 에 인증서를 제공해야 한다. 해당 메세지는 ㅗ뭉노맏 ㅖ개새채ㅣdp 

속하는 메세지이며 두 가지 필드가 있다. 

1. 서버가 인식 할 수 있는 인증서 타입 리스트

2. 서버가 인식 할 수 있는 DN 타입 리스트

 

Client certificate

Server가 Client에게 보낸것과 동일하며 여기에는 Client 인증서와 인증서 체인에 속한 모든 인증서가

들어 있다. 

 

Certificate verify

Client가 Server에 자신이 보낸 인증서의 주인이 정말 Client 라는것을 입증하는 메세지이다. 

ClientVerify 메세지는 Handshake Protocol 에 속하는 메세지로 이 안에는 서명값이 들어 있다. 

서명값은 클라이언트가 서버에게 보낸 모든 메세지들을 압축한 Hash 값을 Client 개인키로

암호화 하여 생성한 값이다. 

 

이 서명값은 서버에게 클라이언트의 인증서 안에 기입된 공개키와 쌍이되는 개인키를 클라이언트가 

가지고 있다는것을 증명한다. 

즉, 공개키와 쌍이되는 개인키를 가지고 있다는 것은 클라이언트가 그 공개키가 있는 인증서의 

주인임을 증명하는 것이다. 

'Development > Security (보안)' 카테고리의 다른 글

SSL 통신원리  (0) 2020.10.14
SSL 이란?  (0) 2020.09.22
X.509 인증서  (0) 2020.09.18
JAVA 사설인증서 MTLS 통신 ( Server )  (0) 2020.09.16
Java 사설인증서 MTLS 통신 ( Client )  (0) 2020.09.15

+ Recent posts