SSL 인증서

프로그래밍 2023. 3. 7. 22:15

앞의 글에서는 RootCA와 인증서에 대해 알아 보았습니다.

 

 

인증서 - RootCA

CA 는 Certificate Authority의 약자입니다. 인증서에 대한 발급 권한을 의미하는 것인데요. 인증서 발급 업체를 의미하기도 하지요. 인증서의 발급은 너무나 쉽게 할 수 있습니다. Open Source인 OpenSSL을

dicom.fadens.net

그러면 이제 SSL 인증서를 알아 볼 차례이군요.

 

Code sign 인증서와 마찬가지로 SSL 인증서도 RootCA기관에 요청하여 서명을 받은 SSL 인증서를 획득할 수 있습니다.

서명이란, 인증서 data의 hash 값을 얻은 다음 그 값을 비밀키로 암호화 하고 그 결과를 인증서 data 에 붙이는 과정입니다.

인증서 내용 자체를 암호화 하는 것이 아님을 유의 하시기 바랍니다.

 

그리고 클라이언트는 이 인증서의 정보를 보고서 서버를 신뢰할 수 있는지 확인할 수 있고 인증서 내에 포함되어 있는 public key를 이용해서 비밀키를 서버로 전달하게 됩니다. 

 

좀 더 살펴 보면...

SSL 인증서를 이용하는 https 통신을 하는 경우는

1) 클라이언트가 연결을 시도하면

2) 서버가 SSL 인증서를 클라이언트로 우선 보내고,

3) 클라이언트는 우선 받은 SSL 인증서가 유효한 것인지 확인을 해야 하는데 OS나 Browser에 저장되어 있는 Root 인증서를 이용해서 RootCA가 서명한 SSL 인증서의 서명이 유효한지 확인 합니다(자세한 내용은 앞의 글 참조).

4) 클라이언트는 서버와의 데이터 교환시 사용할 암호화 키를 생성해서 서버와 공유해야 하므로 비밀키를 생성(성능상의 이유로 실제 데이터 교환시에는 비대칭 키가 아닌 대칭키를 사용)하여

5) 다시 서버로 보냅니다. 이때에 이 비밀키를 암호화 하는 key는 서버가 보내준 SSL 인증서에 포함되어 있는 public key를 이용합니다.

6) 그리고 서버와 클라이언트는 공유한 Key를 이용해 Master Key를 얻고 이것을 이용해 다시 Session Key를 얻습니다. 둘 만이 알고 있는 이 Session key가 공유되면,

7) 각  Session은 이 Key(대칭키)로 데이터를 암호화 및 복호화 하여 서로 교환하게 됩니다.

이때에 Master Key로는 여러개의 Session key를 생성할 수 있는데  한 명의 사용자가 여러개의 Session 연결을 가질 수 있기 때문입니다.

 

요점

"SSL 인증서를 이용하는 https 통신은 비대칭키와 대칭키 방식을 모두 사용한다."

"SSL 인증서도 RootCA를 통해 인증서에 서명을 받아야 한다."

728x90
반응형

'프로그래밍' 카테고리의 다른 글

인증서 - RootCA  (0) 2023.03.06
소켓 프로그래밍 6 - IOCP(1)  (0) 2022.06.26
소켓 프로그래밍 5 - Sliding Window  (0) 2022.06.24
Network Byte Ordering  (0) 2022.06.23
소켓 프로그래밍 4 - Data Boundary  (0) 2022.06.23
admin