RSA 알고리즘을 이용하면 공개키/개인키 쌍이 생성된다.
우리는 암호화 통신을 이용하여 통신할 때 공새키를 사용자들에게 공개하게 되는데, 이 공개키가 해당 도메인(ex naver.com)에서 발행한것에 대한 보징을 받기 위해 인증기관(CA)에 공개키를 등록하게 된다.
이는 마치 인감도감을 만들어서 동사무소에 인감을 등록하는 과정과 같은데, 인감도장의 내용을 동사무소에 등록하면 동수마소는 이것이 내가 발행한 인감이라는 것을 보증하여 준다. 공개키(인감도장, 인증서) / 인증기관(동사무소, CA)
여기서 인증기관(CA)은 나의 공개키(인증서)를 보증하기 위해서 서명을 하게 된다. 여기서 서명이란 나의 공개키의 해쉬된 값(SHA256)을 인증기관의 개인키로 암호화 한 결과값을 뜻한다. ⇒ 디지털 서명(Digital Signing)
인증서에는 다양한 정보들이 포함되어 있지만 그중에서 중요한 정보들은 다음과 같음
- 발급대상 (issued) : naver.com
- 발급대상의 공개키
- 발급자(issuer) : naver.com 인증서를 발행한 인증기관
- 발급자의 서명(issuer signing) : naver.com의 인증서를 발행한 인증기관의 디지털 서명
이러한 인증서의 주요정보를 모아 SHA256등의 해쉬 알고리즘을 이용하여 해쉬 수행. 이렇게 해서 나온 해쉬값을 인증서의 Finger Print(지문)이라고 한다.
이렇게 나온 해쉬값(Finger Print)을 발급자(issuer)(CA)의 개인키로 암호화한 값이 서명값(Digital Signing)이다.
이런식으로 상위 인증기관이 하위 인증서가 포함하고 있는 공개키를 상위기관의 개인키로 암호화 하여 상호 보증하게 되는데 이것을 인증서 체인(Certificate Chain)이라고 한다.
이 인증서 체인을 통하여 최종 인증서(naver.com)는 중계기관(Intermediate CA)가 보증해주며, 중계기관의 인증서는 루트 인증기관(ROOT CA)가 보증해주게 된다. 루트 인증기관은 상위 인증기관이 없기 때문에 셀프 사인(스스로 보증)하게 된다.
가끔 크롬브라우저에서 https로 도메인접속을 하였을 때, 신뢰할 수 없는 인증서라는 보안페이지가 뜰때가 있는데 이것은 인증기관(CA)없이 발행한 사설인증서를 사용했기 때문에 나타는 페이지이다.
앞에서 말했던것처럼 브라우저는 신뢰할만한 인증기관(CA)의 인증서를 갖고있으며, 이 인증서 목록에 없는 인증서는 신뢰를 하지 않는다.
2020/03/10 - [그 외 ... (정리해야함)/꿀팁] - Self Signed Certificate(SSC), Certificate Signing Request(CSR)
'그 외 ... (정리해야함) > 꿀팁' 카테고리의 다른 글
Java stream 요소 존재여부 확인 (0) | 2021.01.21 |
---|---|
[Intellij] ClassDiagram(UML) 보기 (0) | 2020.07.24 |
Self Signed Certificate(SSC), Certificate Signing Request(CSR) (0) | 2020.03.10 |
openssl을 이용한 인증서 정보 보기 (0) | 2020.03.10 |
openssl을 이용한 인증서 포맷 변경 (0) | 2020.03.10 |