본문 바로가기

Secure UC

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

글 싣는 순서

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


2012년 12월 21일, 드디어 외부  CA 서버를 이용한 인증서를 IP Phone에 탑재할 수 있는 CUCM 9.1.1 버전과 CSR을 생성해주는 CAPF COP File이 정식 릴리즈되었습니다. 외부 CA 서버를 이용한 인증서 생성 시 반드시 CUCM 9.1.1 이상 버전과 CAPF COP 파일을 사용해야 하며, 전화기의 펌웨어는 9.3.1 버전을 사용해야 합니다.  

"[연재] Cisco Secure IP Telephony길라잡이"의 앞 과정을 모두 완료된 상태에서 아래 과정이 진행되는 것을 전제로 합니다. 이 과정만을 진행하는 것은 의미가 없습니다.  지금부터 설치 과정을 살펴보겠습니다.

 
CUCM 9.1.1 및 CAPF COP파일 다운로드 
CUCM 9.1.1 버전은 시스코 소프트웨어 다운로드 사이트에서 다운로드 받을 수 있습니다. 아래 그림에서  첫번째 Restricted 버전을 다운로드 합니다.  CUCM은 Restricted 버전과 Un-restricted 버전 두 가지가 있습니다. Restricted 버전은 암호화까지 지원하는 버전으로 우리나라에서 사용할 수 있는 버전이며,  Un-restricted 버전은 암호화가 지원되지 않는 버전으로 어느 나라에서나 사용할 수 있습니다.  

CUCM Restricted 버전으로 주문하거나 다운로드 받으면 됩니다. 또한, CUCM 9.1의 Utility 디렉토리에서 " Cisco CAPF COP File"을 다운로드 합니다. 이 파일은 IP Phone이 CSR을 생성 하고, 다시 인증서를 IP Phone에 주입할 수 있도록 도와주는 파일입니다. 현재는 별도로 Cisco CAPF COP File을 패치해야 하지만, 2013년 8월에 출시될 CUCM 10.0에서 통합될 예정입니다. 


CUCM을 9.1.1으로 업그레이드하기
이미 CUCM 9.1.1의 FCS (First Customer Shipment) 버전을 직접 설치하였다면 업그레이드를 진행할 필요가 없습니다. 여기에서는 하위버전에서 CUCM 9.1.1 FCS 버전으로 업그레이드를 진행하겠습니다. 설치시간은 대략 2 시간 정도 소요됩니다.

우선은 VMWare vSphere Client를 이용하여 "CD/DVD drive 1"에 ISO 이미지를 마운트합니다.  


CUCM 9.1.1 FCS 버전을 선택합니다.


다음으로 CUCM OS Admin으로 접속한 후에 "설치 및 업그레이드"를 선택합니다. 


VMware vSphere Client에서 DVD/CD 상에 CUCM ISO 이미지를 마운트하였으므로 "DVD/CD"를 선택합니다. 

CUCM에서 마운트된 이미지를 확인한 후에 다음을 선택합니다.


CUCM이 파일을 읽어오는 것을 확인합니다.

파일을 읽은 후에는 업그레이드 버전을 확인한 후에 재부팅 옵션을 선택합니다. 만일, 클러스터 내에 2 대이상의 CUCM이 있다면 "업그레이드 후에 새 버전으로 전환하지 않음"을 선택하시기 바랍니다. 여기서는 클러스터 내에 한 대의 CUCM만 있으므로 업그레이드 후에 바로 시스템 재부팅을 하도록 선택합니다. 


이제 "Next" 또는 "다음"을 선택합니다. 

위의 그림은 실제 진행중인 상황과 로그를 표시합니다. 진행 간에 세션이 끊기게 되면 "F5"나 "새로고침"을 눌러서 다시 세션을 시작합니다. 여기가 가장 많은 시간이 소요됩니다. 


CUCM이 업그레이드 되고 나면, 자동으로 재부팅하여 새버전인 CUCM 9.1.1으로 동작합니다.  부팅 후에 CUCM에 접속하게 되면, 현재 운용중인 새 버전을 아래와 같이 확인할 수 있습니다. 


CAPF COP 파일 업로드하기
이제 CUCM 9.1.1-10000-11으로 업그레이드가 완료되었다면, COP 파일을 업데이트합니다. CAPF COP파일이 있는 컴퓨터를 FTP 서버로 설정합니다. 저는 알 FTP를 이용하여 FTP 서버로 설정한 후에 루트 디렉토리에 파일을 올려 놓았습니다. 

 OS Admin 페이지에서 "소프트웨어 업그레이드" >> "Install/Upgrade"를 선택합니다. 아래 그림과 같이 기본 설정을 합니다. 

아래 그림과 같이 루트 디렉토리에 있는 "ciscocm.capf_lsc_ca.cop.sgn" 파일을 선택합니다. 

 선택된 파일로 진행하게 되면 아래 그림과 같은 순서로 진행됩니다. 


"다음" 버튼을 클릭합니다.


설치가 완료되면, 아래 그림과 같이 "Locale cisco.capf_lsc_ca.cop has been installed successfully"라는 상태 메세지가 뜨면 완료된 것입니다. 

COP 파일 업로드는 약 10 분 정도의 시간이 소요됩니다.


CSR 생성을 위한 COP 파일의 동작 여부 확인
CUCM에 직접 콘솔로 접근하거나, 아래 그림과 같이 SSH로 CUCM에 접속합니다. 

접속한 후에 "utils capf ?"를 쳐서 CAPF 관련 명령어가 생성되었는 지를 확인합니다.


기본적인 CAPF 관련 명령어가 동작함을 확인한 후에 아래 그림과 같이 "utils capf lsc ca enable" 명령어를 이용하여 CAPF가 전화기마다 CSR을 생성하도록 활성화합니다. 


활성화가 되면, CAPF 서비스를 재시작해야 합니다.  CUCM Serviceability 페이지에서 "Stop" and "Restart"를 이용하여 활성화 합니다.


전화기의 CSR 생성
이제 CUCM은 CSR을 생성하여 특정 디렉토리에 쌓을 것입니다. 전화기가 CSR을 생성하도록 하기 위해 다음과 같은 설정을 합니다. 


여기에서는 CSR을 생성하는 것이 목적이므로 Device Security Profile 은 "Non-Secure Profile" 또는 Secure Profile을 설정하고, CAPF Information란에서만 인증서 작업은 "Install/Upgrade (설치/업그레이드)"를 선택하고, 인증모드는 "Null String(Null 문자열)"을 선택합니다. 보안 설정 후에는 저장하시고 재설정합니다. 


전화기가 CUCM에 재등록을 한 후에 아래의 명령어로 CUCM이 정상적으로 전화기의 CSR을 파일로 생성하였음을 확인합니다. "utils capf csr count"는 현재 CUCM의 CSR  디렉토리에 몇개의 CSR이 있는 지를 확인합니다. 

CSR을 PC로 다운로드 하기
이제 생성된 전화기의 CSR을 다운로드해야 합니다. 다운로드를 위해 사용할 명령어는 "utils capf csr dump" 명령어입니다. 이 명령어는 다수의 CSR  파일을 하나의 압축파일로 생성하여 FTP 서버로 업로드합니다.

아래 그림은 CSR이 생성된 1개의 CSR을 FTP를 이용하여 다운로드 한 것입니다. 

다운로드한 CSR 파일 확인하기
CSR은 TAR로 압축된 tmp_capf_csr.tgz 로 FTP로 전송됩니다.  압축파일을 풀기 위해서는 리눅스 상에서 tar -xvzf <파일명.tgz>를 이용합니다. 개별 파일은 SEP로 시작하는 <Device id>.der 파일로 표시됩니다. 

아래 그림은 tmp_capf_csr.tgz 파일을 압축해제하여 SEP<Mac address>.csr  파일을 얻었습니다.


CSR 파일의 내용은 다음과 같으며, PEM 형식으로 나타나 있습니다. 


만일 PEM 형식의 파일의 CSR 내용을 DER 보고 싶을 경우에는 다음의 명령어를 이용합니다.

"openssl req -in SEPe8ba70fb1a00.csr -noout -text"

아래와 같은 내용을 볼 수 있습니다.

Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: serialNumber=PID:CP-9971 SN:FCH15228Y6F, C=KR, O=Cisco Systems, OU=Collaboration, CN=CP-9971-SEPe8ba70fb1a00
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (2048 bit)
                Modulus (2048 bit):
                    00:cf:bb:02:13:42:f9:c7:51:25:25:bc:2e:8c:c3:
                    cc:5e:9b:f6:f6:3e:52:99:d7:cf:89:09:ab:6e:45:
                    2b:67:a8:28:cc:60:e4:eb:cc:fe:d6:f4:32:09:20:
                            <중간 생략>
                    fe:41:3c:02:88:4a:e7:01:67:58:67:65:58:9f:bc:
                    96:55
                Exponent: 65537 (0x10001)
        Attributes:
        Requested Extensions:
            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment
    Signature Algorithm: md5WithRSAEncryption
        90:30:f9:91:e2:a4:f8:a9:99:46:0a:2b:30:64:7d:69:46:29:
        9b:f3:2a:8b:ce:fe:13:d5:96:77:a9:89:69:34:65:fd:03:fc:
        84:47:54:a3:b2:5f:13:c6:b8:87:dd:50:cb:4d:d2:36:dc:1e:
                   <중간 생략>
        ec:22:c3:f6:5f:46:08:f2:45:70:e6:b5:45:a6:fc:3d:2d:b3:
        51:d7:14:1f


CSR을 CA 서버로 전송 및 수령
개별 CSR 파일로 압축해제하여 3rd Party 인증 기관에 전송합니다. 이 부분은 일반적인 수동 과정을 거치므로 생략합니다. 현재 CUCM은 안랩의 ADG (Ahnlab Device Gateway)와 연동하여 이 부분을 수동 또는 자동화할 계획입니다만, 공공기관의 경우에는 행정안전부 지침이 바뀌지 않아 수동으로 일일이 작업해야 하는 어려움이 있습니다.  공공기관이 아닌 경우에는 기업 내에 CA 서버 또는 한국정보인증(Signgate)을 이용하여 서명을 받을 경우에는 안랩의 ADG 서버를 이용할 것을 권장합니다.

인증기관으로 부터 Certificate를 수신할 때는 반드시 DER 포맷으로 받아야 합니다. 만일, PEM 포맷으로 준다면 개별 파일을 일일이 DER 포맷으로 변경해야 하는 번거로움이 있습니다. 


서명된 인증서를 CUCM으로 업로드
DER 파일 포맷으로 수령한 각각의 인증서를 하나의 파일로 압축합니다. tar -cvzf <파일명.tgz> *.der 로 압축합니다. 

아래 그림에서는 두 개의 DER 파일을 testcer7.tgz 파일로 압축한 것입니다. 

압축한 TGZ 파일을 CUCM으로 업로드하는 방법은 FTP를 이용한 방법과 TFTP를 이용한 방법이 있습니다. FTP를 이용할 때에 아래와 같은 에러 메세지를 경험하게 된다면, FTP 어플리케이션을 의심할 필요가 있습니다. 최선 버전의  FTP를 이용하던지 다른 FTP 어플리케이션을 이용해 보시기 바랍니다. 저는 TFTP로 시도하였습니다. 

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error exit delayed from previous errors


여기에서는 TFTP를 이용한 방법을 설명합니다.  압축한 TGZ 파일을 업로드하기 위한 명령어는 "utils capf cart import"입니다.

위의 그림에서는 testcer7.tgz를 업로드하는 과정을 나타낸 것입니다. 


IP Phone에서 각 단말의 인증서 다운로드
TGZ 파일 업로드 후  2 초 안에 전화기들이 재부팅을 합니다. 전화기에서 "Setting >> administrative settings >> Security setting "로 접근하면, LSC가 "Pending"에서 "Installed"로 바뀐 것을 확인할 수 있습니다. IP Phone은 Mac-address를 기반으로 3rd party CA로 부터 서명된 인증서를 자동으로 다운로드 받습니다. 또한, IP Phone이 정상적으로 Certificate (인증서)를 다운로드하게 되면, CUCM은 Mac-address가 매칭되는 CSR을 삭제합니다. "utils capf csr count" 명령으로 CSR의 숫자가 0가 되는 것을 확인할 수 있습니다.

CUCM에서 전화기 설정 화면에서는 다음과 같이 "인증서 작업 상태: 업그레이드 성공"으로 표시됩니다. 또한 인증서 작업 상태는 완료가 되었으므로 "보류중인 작업 없음"으로 표시됩니다. 


전화기를 보안모드로 동작시키기
이제 Device Security Profile을 "Secure Profile"로 변경하면, 모든 전화기들은 보안 통신을 시작할 것입니다. 


마치며
이제 "[연재] Cisco Secure IP Telephony  길라잡이"와 "[연재] Cisco Secure IP Telephony의 이해" 연재를 모두 완료합니다.  "SIP 이해" 연재 이후에 다시는 이런 거 하지 말아야지 했지만, 보안에 대한 이슈가 너무 뜨거워서 단기간의 폭풍집필로 마무리합니다. 이 연재는 기존의 글보다는 훨씬 쉽게 쓰여졌다고 생각합니다.  Secure IPT의 배경지식이 없는 분들을 위한 글과 CUCM에 대한 보안 설정이 어려운 분들을 위한 글로 나누어 정리하였습니다. CUCM을 기반으로 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를 공부하는 사람들이 모인 구글 구룹스) 
정리하고 보니 나도 디지털 네이티브 _____________________________________________________