인프런 커뮤니티 질문&답변

enhan님의 프로필 이미지
enhan

작성한 질문수

데브옵스(DevOps)를 위한 쿠버네티스 마스터

TLS 인증서를 활용한 통신 이해

TLS인증서를 활용한 통신 이해 관련 질문입니다.

작성

·

278

0

안녕하세요? TLS를 보는중에 궁금한점이 있어서 글을 적어봅니다.
말씀하신 순서중에 궁금한것을 적어보았습니다.
번호는 순서이며, () 괄호 안이 질문입니다.
 
1.공개키는 따로 안만들고 개인키만 만들고나서,
공개키가 아니라 공개키 같은 이라고 CSR을 말씀해주셨는데,
공개키를 역할을 하지만 거기서 +@을 하는 파일이라고 이해하면 될까요? <개인키, CSR이 서로 암,복호화가 가능한>
 
또는 CA에게 받는 CRT 또는 CER 파일이 공개키가 되는건가요?
그렇다면 CA가 CSR을 보고 공개키를 만들어 주는건가요?
CSR만들때 개인키를 넣어서 만드는건가요?
 
서로 어떤게 비대칭되는 키인지 궁금합니다.
 
2. 만약 개인키를 CA에게 보내는것이라면,
개인키는 자기 자신만 가지고 있어야 하고 다른곳에 절대 보내면 안된다고 이해하고 있었습니다.
CA는 믿어도 된다고 생각하고 보내는건가요?
 
 
3. 서버가 CA에게 개인키를 보내면, 공개키를 만들어서 보내준다.
( 이 부분에서 공개키와, 인증서는 어떤식으로 오게되나요?
crt 또는 cer 파일명으로 된 인증서에 공개키가 포함되어 있는건가요?)
 
 
4.저기서 sessionkey가 대칭키인건가요?
 
 
5. 클라이언트가 개인키와 공개키를 가지고 있다고 하셨는데,
저는 그것을 만든적이 없습니다.
저의 개인키와 공개키는 언제 누가 만든건가요?
 
 
사이트를 열몇개를 찾아봐도 제대로 된 명확한 깨달음이 안얻어지네요..
대부분 self 인증만 하는것이 대부분이고...
 
읽어주셔서 감사합니다..

답변 3

0

안녕하세요 강사 최일선입니다.

1) 1,2,3 에서 서버의 공개키는 생성한적이 없는데, 언제 생성이 된건가요?

 

gasbugs.csr을 생성했을때 gasbugs의 공개키는 자동생성되어서 csr에 저장된다고 보시면 됩니다. 서버의 공개키라고 하시면 CA.crt를 말씀하시는 듯 하는데 cluster가 처음 init 될 때 생성됩니다.

 

2) 2번에서  CSR생성시, 

"openssl req -new -key gasbugs.key -out gasbugs.csr -subj "/CN=gasbugs /O=boanproject" 

에서의 gasbugs.key는 서버가 자신의 개인키로 서명을 하기위하여 들어가는것인가요?

개인키로 공개키를 생성하기 위해 들어가는 겁니다. 서버가 아니라 개인이 진행한다고 보는게 맞습니다.

 

 

3. 5번 질문은 CA, 클라이언트, 서버 이렇게 세개가 있을때, 클라이언트에 대해서 궁금했습니다.

예를들어 제가 inflearn.com 사이트를 들어왔을때, 저의 공개키를 보낸다고 이해를 하였는데,

제가 가지고있는 공개키와 개인키는 언제 만들어 진건가요?

inflearn.com은 사용자의 인증서 개인을 인증하지 않습니다. 다음과 같이 사용자가 미리 등록한 정보를 사용하거나 OpenID를 사용해 로그인을 수행합니다. 인프런에서는 공개키 기반으로 사용자를 인증하지는 않으며 인프런에 대한 도메인 인증만 인증서로 수행합니다.

 

쿠버네티스는 이와 다르게 사용자와 서버 모두 인증서로 인증하기 때문에 인프런의 인증과 쿠버네티스 서버의 인증은 같다고 보기 어렵습니다. 오히려 금융기관 접속시 인증할 때 개인 인증서의 정보를 전달하는 부분이 더 쿠버네티스 통신과 유사하다고 봐야할 것 같습니다. 

감사합니다.

 

0

enhan님의 프로필 이미지
enhan
질문자

답변 감사합니다! :)

그렇다면, CA에게 인증을 요청하는 서버에서 CSR을 만들때,

"CSR에는 공개키가 포함되어 있다고 설명하고 있습니다. 신청서 + 개인키 + 신청자 정보로 보시면 될 것 같습니다.

공개키는 신청자가 생성합니다"

라고 답변을 해주셨습니다.

"TLS 유저 생성 및 유저 등록 연습문제" 에서

 

1. 개인키 생성
openssl genrsa -out gasbugs.key 2048

2. CSR생성 (신청서 + 개인키 + 신청자 정보)

openssl req -new -key gasbugs.key -out gasbugs.csr -subj "/CN=gasbugs /O=boanproject"

3.인증서 발급

openssl x509 -req -in gasbugs.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out gasbugs.crt -days 365

 

1) 1,2,3 에서 서버의 공개키는 생성한적이 없는데, 언제 생성이 된건가요?

3번까지의 과정을 거치면 "gasbugs.csr  gasbugs.key" 이 두개의 파일만 확인됩니다.

" CSR에는 신청자가 선택한 공개 키도 포함되어 있습니다" 라고 말씀 해주셨는데,

저는  2번의 명령어에  -----BEGIN RSA PRIVATE KEY----- 로 시작되는 개인키인 gasbugs.key로 적었기에, 공개키가 어디서 언제 포함이 되었는지 모르겠습니다.

 

 

 

2) 2번에서  CSR생성시, 

"openssl req -new -key gasbugs.key -out gasbugs.csr -subj "/CN=gasbugs /O=boanproject" 

에서의 gasbugs.key는 서버가 자신의 개인키로 서명을 하기위하여 들어가는것인가요?

 

 

 

3. 5번 질문은 CA, 클라이언트, 서버 이렇게 세개가 있을때,

클라이언트에 대해서 궁금했습니다.

예를들어 제가 inflearn.com 사이트를 들어왔을때, 저의 공개키를 보낸다고 이해를 하였는데,

제가 가지고있는 공개키와 개인키는 언제 만들어 진건가요?

 

 

친절한 답변 정말로 감사합니다. :)

0

안녕하세요 강사 최일선입니다.

 1.공개키는 따로 안만들고 개인키만 만들고나서, 공개키가 아니라 공개키 같은 이라고 CSR을 말씀해주셨는데, 공개키를 역할을 하지만 거기서 +@을 하는 파일이라고 이해하면 될까요? <개인키, CSR이 서로 암,복호화가 가능한>

위키피디아 사이트에서 번역한 내용입니다. 아래 글에 보시면 CSR에는 공개키가 포함되어 있다고 설명하고 있습니다. 신청서 + 개인키 + 신청자 정보로 보시면 될 것 같습니다. 공개키는 신청자가 생성합니다.

----------------------------------------------------------------------------------

출처: https://en.wikipedia.org/wiki/Certificate_signing_request 의 내용 중

CSR을 만들기 전에 신청자는 먼저 키 쌍을 생성하여 개인 키 를 비밀로 유지합니다. CSR에는 신청자의 개인 키를 사용하여 서명해야 하는 지원자(예: X.509 인증서의 경우 고유 이름)를 식별하는 정보가 포함되어 있습니다. CSR에는 신청자가 선택한 공개 키도 포함되어 있습니다. CSR은 인증서 기관에서 요구하는 다른 자격 증명 또는 신원 증명을 동반할 수 있으며 인증서 기관은 신청자에게 연락하여 자세한 정보를 문의할 수 있습니다.

인증 요청은 인증 요청 정보, 서명 알고리즘 식별자 및 인증 요청 정보의 디지털 서명의 세 가지 주요 부분으로 구성됩니다.

-----------------------------------------------------------------------------------

 

2. 만약 개인키를 CA에게 보내는것이라면, 개인키는 자기 자신만 가지고 있어야 하고 다른곳에 절대 보내면 안된다고 이해하고 있었습니다. CA는 믿어도 된다고 생각하고 보내는건가요?

개인키는 전송하지 않습니다~ 위 글의 첫 문장을 확인하시면 되겠습니다.

 

 

3. 서버가 CA에게 개인키를 보내면, 공개키를 만들어서 보내준다. ( 이 부분에서 공개키와, 인증서는 어떤식으로 오게되나요? crt 또는 cer 파일명으로 된 인증서에 공개키가 포함되어 있는건가요?)

csr에 공개키가 포함되어 있으며 csr을 기반으로 생성한 인증서에도 공개키가 포함됩니다.

 

4.저기서 sessionkey가 대칭키인건가요?

 네 맞습니다.

 

5. 클라이언트가 개인키와 공개키를 가지고 있다고 하셨는데, 저는 그것을 만든적이 없습니다. 저의 개인키와 공개키는 언제 누가 만든건가요?

최초의 인증서와 개인키를 물어보시는 것 같습니다. 클러스터를 처음 구성하실 때 kubeadm init을 하셨을 겁니다. 그때 함께 구성합니다.

 

감사합니다.

 

enhan님의 프로필 이미지
enhan
질문자

답변으로 재질문을 하였습니다.

답변 정말로 감사합니다. :)

enhan님의 프로필 이미지
enhan

작성한 질문수

질문하기