본문 바로가기

Secure UC

[연재] Secure IP Telephony 길라잡이 - (4) 외부 CA 서버에서 CUCM인증서 받기

글 싣는 순서

1. CTL Client 개요 및 설치
2. CTL Client 설정하기
3. 전화기를 보안모드로 설정하기 
4. 외부 CA 서버에서 CUCM 인증서 받기
5. 외부 CA 서버에서 IP Phone 인증서 받기
6. 외부 CA 서버에서 CUBE 인증서 받기
7. CUCM과 CUBE간 TLS 연동

                                                                              

4장 부터는  Cisco Secure IP Telephony가 외부의 CA 서버를 통해 인증서를 받는 과정을 다룹니다. IP Telephony의 기본 장비인 CUCM, IP Phone, CUBE에 필요한 인증서를 위한 CSR 추출과 인증서 주입에 대해 다루겠습니다. 

이번 글에서는 외부 인증 서버에서 CUCM 인증서를 받는 과정을 살펴보겠습니다.


CUCM의 인증서 개요
CUCM은 다양한 기능을 수행하는 여러 서비스가 한 서버에서 동작합니다. IP Phone을 위한 어플리케이션에서 부터 IPSec 터널링 등을 지원합니다. 특히, 인증서가 필요한 서비스는 아래와 같습니다. 

    • Tomcat
    • TVS (Trust Verification Service) 
      보안을 위한 중요한 컴포넌트로써,  IP Phone이 애플리케이션 서버를 인증할 수 있도록 합니다. 애플리케이션 서버는 Extension Mobility, Directory, MIDlet 등입니다. 
    • IPSec
    • Callmanager
    • CAPF (Publisher Only)

CUCM은 각 서비스별로 두 개의 저장소(Store)가 있습니다. CUCM의 서비스가 직접 사용하는 인증서를 저장하는 일반 Store와 인증서에 서명한 CA의 인증서 또는 Self-signed 인증서를 저장하는 Trust-Store입니다.  CUCM의 CallManager서비스를 예로 들면,  CallManager 서비스가 사용하는 인증서는 일반 Store에 설치하고,  CallManager 인증서에 서명한 CA의 인증서는 CallManager Trust-store에 설치합니다. 


주의사항
여기에서는 CallManager 서비스와 CAPF 서비스에 대한 CSR 추출 및 Certificate (인증서) 주입에 대하여 설명하지만, 실제
TLS / SRTP 기능을 위해서는 CallManager 서비스에 대한 인증서 필요합니다. CAPF를 주입할 경우에 CSR의 Subject Name이 CAPF 인증서의 것으로 바뀝니다. Call Manager 에 대한 CSR만을 추출하고 Certificate를 주입하시기 바랍니다. 


CUCM 인증서 확인하기
CUCM은 각각의 서비스별로 별도의 인증서를 가지고 있습니다. CUCM 인증서를 확인하기 위해 아래그림과 같이 "Cisco Unified OS Administration" 페이지로 접속한 후 메뉴바에서 "Security >> Certificate Management"를 클릭합니다. 


CUCM은 제품 설치 시에 기본적으로 아래 그림과 같이 많은 인증서가 설치됩니다.  


위의 그림에서 맨 왼쪽 줄에 tomcat, ipsec, CAPF,TVS, callManager는 일반 스토어이며, tomcat-trust, ipsec-trust, CallManager-trust, CAPF-trust는 trust 스토어입니다. 여기서 우리의 관심사는 IP Phone을 위한 CAPF와 Trunk 연동을 위한 CallManager 서비스입니다. Cisco_Manufacturing_CA.pem은 시스코 공장에서 제공하는 CA의 인증서이며, Cisco_Root_CA.pem은 시스코의 최상위 Root CA입니다.  또한, CAP-RTP-001.pem 과 CAP-RTP-002.pem은  MIC를 사용하는 전화기를 위한 CA 인증입니다. 


CSR 생성하기
이제 TLS 및 sRTP를 위해 CAPF와 CallManager 서비스에 대한 CSR을 생성해보겠습니다. CSR은 Certificate Signing Request로 인증서 서명 요청입니다. 이미 CUCM은  개인키와 공개키를 보유하고 있으며, 보유한 공개키를 외부 CA에 의해 서명을 받는 과정입니다. 

Certificate Management 창에서 "Generate CSR"을 클릭합니다. 


아래그림과 같은 창이 나타나면,  Certificate Name 파라미터에서 CAPF를 선택한 후에 "Generate CSR" 버튼을 클릭합니다. 

 

그리고, 마찬가지로 CallManager를 선택한 후에 "Generate CSR" 버튼을 클릭합니다. 


"Close" 버튼을 누른 후에 아래 그림에서 "Download CSR"을 클릭합니다. 


아래 같은 창이 표시되면, Certificate Name 파라미터에서 위에서 생성한 두 개의 CSR을 차례 차례 다운로드합니다. 


자신의 PC로 전송되는 것을 확인할 수 있습니다. 



외부 CA에서 서명받기
다운로드한 CSR은 외부의 CA로 전송하여 서명을 받습니다. 외부 전문 기관에 의뢰하시거나 Microsoft CA나 Linux CA 등을 이용하여 Certification을 생성합니다.  여기에서는 CA에서 인증받는 과정을 생략합니다. 기업내에 CA 가 있다면, CSR을 주면서 인증서를 발행해달라고 하면 됩니다. 


인증서 업로드
CA에 의해 서명된 Certificate를 CUCM에 업로드합니다. 업로드할 경우에는 몇 가지 지켜야 할 사항이 있습니다. 반드시 다음의 순서를 지켜야 합니다.

    • CUCM 서비스에 인증서 설치 순서 : 제일 먼저 CAPF >> CallManager >> Others 입니다.
    • Certificate 설치 순서 : 제일먼저 Root CA >> Subordinate CA >> Certificate 입니다.
    • CA 인증서는 Trust-store에 Certificate는 일반 스토어에 저장
    • CallManager의 Trust-store에 저장된 모든 인증서는 모든 서버에 자동으로 분배

우선은 아래의 Certificate Management 창에서 "Uplaod Certificate/Certificate Chain"을 선택합니다. Certificate Chain은 여러개의 CA가 트리 구조로 엮여 있을 경우에 최상위 CA를 Root CA, 차 상위 CA를 Subordinate CA라고 합니다. Root CA 인증서와 차상위 CA 인증서를 Certificate Chain이라고 하며, 실제 서명은 위의 순서로 되어 있습니다.  

인증서를 업로드할 때  CUCM 서비스는 차례 차례 Trust 관계를 파악하고, 검증합니다. CA가 하나뿐이라면, 하나의 루트 CA 인증서만을 Trust-store에 업로드합니다. 


아래의 창이 표시되면, CAPF 인증서 부터 업로드합니다. Certificate Name에서 CAPF-trust를 선택한 후에 최상위 CA의 인증서를 선택합니다.  


업로드가 성공적으로 이루어지면, 아래 그림과 같이 "Success: Certificate Uploaded"라고 표시됩니다. 이제 차상위 CA 인증서를 업로드 합니다. 


CAPF Trust에 Root CA 및 Sub-CA 인증서를 업데이트를 완료한 후에 아래 그림과 같이 CAPF 인증서를 업로드합니다. 

만일 순서를 지키지 않으면, Fail이 발생합니다. 


이제는 마찬가지 방법으로 CallManager 서비스를 위한 인증서를 업데이트합니다. 같은 과정이므로 생략합니다. 


경우에 따라 Root CA 인증서를 업로드하고, Sub CA 인증서를 업로드를 한 후에 CUCM 인증서를 업로드 시에  에러가 발생하는 경우가 있습니다. 이는 Root CA 인증서의 Extension이 맞지 않아서 발생하는 경우이므로 Root CA 인증서를 삭제한 후에 Sub CA 인증서가 있는 상태에서 CUCM 인증서를 다시 업로드해 보시기 바랍니다. 정상적으로 처리가 되었다면, 다시 Root 인증서를 삽입하는 과정을 거치면 됩니다. 


인증서 업데이트 완료 확인
아래 그림에서 직접 올린  CAPF 및 CallManager 인증서는 이름이 바뀌어 시스코의 이름으로 변경되어 업로드 되었으며, Trust-store 내에는 Root CA 및 Sub-CA 인증서가 업데이트 되었습니다. 


CTL Client를 이용한 CTL 파일 업데이트
CAPF의 인증서가 변경되었으므로 CTL 클라이언트를 이용하여 CTL 파일을 업데이트합니다.  CTL Client를 구동시키면 아래와 같은 화면이 나타납니다. 이미 CUCM은 보안 모드로 동작 중이므로 " Update CTL File"을 선택합니다. 


Security e-token을 연결한 후에 "Next"를 선택하면, 아래 그림과 같이 Security e-token의 값을 불러들입니다. "Next"를 클릭합니다. 


아래 그림에서 Issuer Name 탭을 보시면,  CAPF와 CCM+TFTP의 인증서가 변경된 것을 확인할 수 있습니다. 원래 Issuer의 이름은 자기자신으로 Self-signed Certificate를 이용하였지만, 이제는 외부 서버의 CA를 이용합니다. 


CTL File 변경을 위해 패스워드인 "Cisco123"을 입력합니다. 실전에서는 기본 패스워드를 변경해야 합니다만, 저는 테스트베드이므로 그대로 사용합니다.  


이제 CTL 클라이언트에 의해 새로운 CTL 파일이 생성되었습니다. "Done"을 선택하여 종료합니다. 


시스템 재부팅
모든 CUCM 및 TFTP를 재부팅합니다.  Publisher 부터 차례 차례 부팅합니다. 


마치며
이제 CUCM에 외부 CA 서버가 서명한 인증서를 업데이트하는 전 과정을 따라해 보았습니다. 알고나면 쉽지만, 모르면 감잡기가 쉽지 않은 것이 Secure IPT입니다. 다음에는 CUBE에서 인증서를 주입하고, 추출하는 과정을 살펴보겠습니다. 

요즘 Secure IPT 관련한 이슈가 많아서, SE들의 기술에 대한 갈증을 풀어주고자 폭풍 집필 중입니다. 단순히 길라잡이 수준의 글이다보니 빠르게 업데이트가 되고 있습니다. Cisco Secure IP Telephony에 대한 자료도 조만간 올리도록 하곘습니다. 


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

라인하트 (CCIEV #18487) 
ucwana@gmail.com (라인하트의 구글 이메일) 
http://twitter.com/ucwana (라인하트의 트위터 ) 
http://twitter.com/nexpertnet (넥스퍼트 블로그의 트위터, 최신 업데이트 정보 및 공지 사항) 
http://groups.google.com/group/cciev (시스코 UC를 공부하는 사람들이 모인 구글 구룹스) 
http://groups.google.com/group/ucforum (벤더에 상관없이 UC를 공부하는 사람들이 모인 구글 구룹스) 
정리하고 보니 나도 디지털 네이티브 _____________________________________________________