728x90

Remote Console 이란 원격에서 모니터에서 나오는 화면을 보기 위한 콘솔 프로그램이다.

보통은 vCenter 라는 솔루션을 통해서 웹에서 보도록 되어 있었는데, 5.5 버전 이후에는 이 부분이 풀렸다.


지금 ESXi 6.0을 설치해서 이 기능을 사용하려고 하는데, 그 방법을 정리했다.


1. ESXi 서버 구성.

  먼저 VM을 구성한다.


2. VMware vSphere PowerCLI 설치.

 VM 서버 내에서 VM에 대한 MoID가 필요하다. Object에 대한 고유 ID를 알아야 처리하는데, SSH를 통해서 해당 서버에 접속하여 분석해도 되지만, 이 PowerCLI를 사용하면 굳이 SSH로 일일히 뒤지지 않고도 사용이 가능하다.

먼저 VMWare vSheprer PowerCLI 프로그램을 설치한다.


3,  PowerShell 실행.

그리고 PowerShell을 실행한다.

여기서 잠깐 확인해야 하는 것은 PowerShell의 실행 권한을 해제해야 vSphere PowerCLI 기능을 실행할 수 있다.

Set-ExecutionPolicy Unrestricted

라는 명령을 넣어야 사용 가능하다.

이제 다음 명령을 넣어 서버에 연결한다.


Connect-VIServer


그러면 연결할 서버 주소를 묻는데 ESXi 서버 주소를 넣는다. ( 여러개를 넣을 수 있지만, 일단 한개만 넣고 그냥 엔터를 쳐서 종료한다. )

그러면 인증서 관련 Warning이 뜨고 잠시 기다리면, ID와 Password를 입력하는 창이 뜬다. 이 창에 ESXi 에 관리 권한이 있는 계정을 입력한다.

(보통 root )


연결 되었으면 다음과 같은 명령을 입력한다.


Get-VM | ft -Property Name,ID -AutoSize


실행하면 각 VM 이름과 ID가 표시되는데 그 중 ID 부분만 집중한다.


5.5 이하인 경우 ID 전체를 기억하면 되고, 6.0 이상인 경우 맨 뒤의 숫자 부분만 기억하면 된다.


4. VMRC 설치.

VMware-VMRC-8.0.0-3250412 프로그램을 다운 받아 설치한다.


5. VMRC 실행하기.

VMRC를 기본으로 설치하면 "C:\Program Files (x86)\VMware\VMware Remote Console" 위치에 설치되는데, 이 위치의 VMRC.exe를 실행하면 된다. 명령 줄 창을 띄워 다음 명령을 넣는다.


C:\Program Files (x86)\VMware\VMware Remote Console\vmrc.exe vmrc://[서버주소]/?moid=[ID]


[서버주소]에 ESXi 서버 주소를 [ID]는 앞에서 구한 VM 의 ID 값을 넣으면 된다. 예를 들면 아래와 같이 입력하면 된다.


C:\Program Files (x86)\VMware\VMware Remote Console\vmrc.exe vmrc://192.168.0.50/?moid=2



728x90
728x90

지금 Esxi 서버를 돌리고 있다.
그 중, 가장 중요한 데이터들을 담고 있는 NAS VM을 들고 있는 Esxi 서버의 HDD#1이 Fault 상태에 빠졌다.
서버 외관의 HDD에 녹색 불이 아닌, 주황색 불..

비상이라고 생각되어, HDD 교체를 했다.
문제는 HDD 교체 후의 상태인데, Windows 같은 경우 HP에서 제공하는 서버 감시 드라이버 및 응용 프로그램을 통해 Build 상태를 볼 수 있다. ( 디스크 관리자에서도 표시 )

그런데, ESXi 서버가 되니.. 난감.

어디서 확인할 수 있을까 했더니, Health Status에서 볼 수 있다.

물론 조건은 있다.

지금 돌리고 있는 서버가 HP DL360 G6 인데, 바로, HP 에서 커스터마이징한 ESXi 버전을 설치해야 한다.
만일 Dell 서버면 Dell 에서 제공하는 커스터마이징된 ESXi 버전이 설치되어 있어야 이런 확인이 가능하다.

물론 Windows처럼 Progress가 나타나면 좋을 텐데, 그렇지 않은 점은 좀 아쉽다.

Recovery.... 잘 끝나길 비는 수 밖에 없을 듯 싶다.

728x90
728x90

요즘 하루 하루 업무를 하면서 내가 무슨일을 하고 있는지 기록을 남기고 싶었다.
업무 뿐만 아니라, 간단하게 주고 받은 개인적인 정보라든가, 요청 내용, 그 외에 상황들
일기장 까지는 아니지만, 그 순간 잠깐 기록하고 싶은 마음이 들었다.
단! SNS와는 전혀 다른 방향으로,
뭔가 남에게 노출되는건 정말 꺼리는 정말 개인적인 정보들로만 남발된!
그런 메모!

그래서 마이크로소프트의 원노트도 꺼내보고, 에버노트도 꺼내보며, 포스트잇 프로그램들도 깔아서 써보고, 그외 각종 노트, 메모 프로그램을 깔아서 써보았다. 다양한 사용자들과 다양한 욕구들을 만족 시키기 위해서 여러가지 기능들이 남발하거나, 겹쳐져 존재 했다.

매번 제목 넣으라는 것도 마음에 들지 않았고, 중구난방 화면 가득 붙여져 나가는 포스트잇 스타일의 메모도 탐탁치 않았다. 뭐 종류 별로 정리해서 담으라고 각종 분류 도구를 주는 것도 탐탁치 않았다.

그냥 몇줄의 메모를 남기고 싶은데, 매번 쓸 때마다 제목을 적으라고 해서 내 생각을 매번 요약해야 되니 이것도 일.
또, 내 생각이 어느 순간은 업무, 어느 순간은 취미, 어느 순간은 집안 일 이렇게 바뀌는데, 매번 그 순간 순간 마다 기록을 하다 보니, 결국 분류 실패로 메모들이 정리가 안되었다. 게다가 포스트잇 스타일은 화면 가득 방해 놓는 것도 영, 싫었다.

난 그저, 그냥 쓰고 싶을 뿐인데 말이다.
순간 생각 나거나, 순간 기록을 위한 그냥 텍스트로 입력해서 저장하고,
나중에 날짜나 시간대 별로, 쭉~ 나열해 볼 수 있는 그런 단순한 메모장이 필요했다.

그를 위해서 만들어봤다.

프로그램 사전 정보

  • 프로그램 이름 : KNOIE Memo
  • 용도 : 개인 기록 저장용.
  • 권장 사항 : Windows XP 이상,
                    RAM 1G 이상,
                    HDD 10M, .
                   NET Framework 4.0 이상

 

설치 방법

Click Once로 배포를 간단하게 만들었다.

http://neohind.cafe24.com/deploy/memooff

사이트에 접속해서, “Install” 혹은 “설치” 버튼을 눌러
설치 파일을 다운 받거나 직접 실행하면 된다.

가난한 개발자다 보니, 별도 배포용 인증서가 없다. ( 년 10~20만원을 지불해야 하는데, 무료 배포 버전에 무슨.. 인증서를 -_-;; )
그래서, “알 수 없는 배포자”로 나오기 때문에, 마치 설치 금지 처럼 나오기는 하지만, 대충 무시하고 설치하면 된다.
( 다만, .NET Framework 가 없으면 설치도 안되고, 실행도 안된다. -_-;;; )

사용법

정상적으로 설치되고 실행 되었으면, 오른쪽 아래 트레이 아이콘이 나온다.

이 프로그램은 모두 이 트래이아이콘에서 출발한다.

 

1. 메모기록

여기서 단순 클릭을 하면 메모 입력 창이 뜬다.

적당한 날짜와 시간을 설정하거나, 그대로 둔 뒤, 텍스트 박스 안에 로그를 넣는다.

다 썼으면 “Upload” 버튼을 누른다.

그러면 자동으로 메모장 화면이 닫힌다.

끝.

2. 기록 내용 보기

트레이 아이콘에서 오른쪽 버튼을 누르면 나오는 메뉴에서, View List를 클릭한다.


그러면 다음과 같은 창이 뜬다.

오늘 날짜를 기준으로 모든 기록 내용이 날짜 순으로 나오게 된다.

처음 날짜는 시작 일자, 나중 날짜는 끝 일자이다. 적당히 선택한 뒤, 조회를 누르면 해당 일자 사이의 모든 기록을 볼 수 있다. 성능 및 표시 방법의 문제로 인해 메모 내용이 모두 펼쳐지진 않는다.

원하는 기록을 클릭하면 자동으로 펼쳐지는 정도만 된다.

 

3. 종료

트래이 아이콘에서 오른쪽 버튼을 클릭해서 나오는 메뉴에서

Exit 를 선택하면 끝!

 

정리

이 프로그램을 사용하는데 필요한 추가적인 내용은 다음과 같다.

  • 모든 데이터는 내 문서 폴더에 있는 knoiememo.db 파일에 저장된다.
    ( 반드시 이 데이터베이스 파일을 백업해야 한다.)
  • 쓰기 창을 띄웠는데도 화면에 나타나지 않은 경우 ALT + TAB을 눌러 아이콘을 선택하면 된다.

지금은 시작 프로그램이기 때문에, 아직은 개선할 사항이 많다.
현재 버전에서 개선해야 할 점이나, 추가해볼 필요가 있는 내용은 다음과 같다.

  • 첨부파일 기능
  • DB 파일 자동 백업 기능 ( 클라우드 등 )
  • DB 파일 통합 기능
  • 암호화 처리
  • RTF 형식의 입력 처리

일단은 이렇게 생각은 했지만, 사실 당장 내가 쓰는데는 지장이 없어 시간이 될 때 하나씩 업데이트 할 예정이다.

만일 사용 중 버그가 있으면 댓글을 통해 알려주면 수정해서 업데이트 할 예정이다.

728x90
728x90

서두 ( 넋두리 )

ESXi 서버를 운영할 때, 사실 ESXi 클라이언트 프로그램만 있다면, 큰 문제 없이 사용할 수 있다. Guest PC의 제어는 물론 Console창까지.. 다양한 기능을 제공하는 종합 관리 도구라고 볼 수 있다.
이미지 20140723_130018_001

하지만, 이 ESXi 서버가 방화벽안에 들어가 있어, 외부에서 접속을 하려면, 생각보다 난제점이 많다. 다양한 기능을 제공하는 만큼 다양한 네트워크 리소스가 필요한데, 아래와 같은 다양한 네트워크 포트를 열어야 한다.

이미지 20140723_104203_001

사용할 네트워크의 종류를 나눠서 필수적으로 열어야 하는 포트만 정리하여 구성할 수 있지만, 그것도 1대의 ESXi 서버에서만 해당되고, 여러 대인 경우에는 불가능 할 수 밖에 없다. 최종적으로는 VMWare 측에 vSphere 를 한꺼번에 관리하는 서버 라이센스를 구매해서 관리하는 방법 밖에는 없다.

하지만, 가난한 작은 회사에서 2~3대의 ESXi 서버를 관리하기 위한 솔루션으로 구매하기는 그리 쉽지 않다. ( 상신 올려도 승인 받기까지의 과정은 정말이지… )

차선으로 생각한 방법은 아래와 같다.

ESXi서버네트워크

인터넷 공유기에 ESXi 서버 두대와 별도 PC를 연결한다. 그래서 별도 PC에 ESXi 클라이언트를 설치하고, 해당 PC의 원격 연결 (MS-RDP : MS 원격데스크톱)을 통해서 두대의 EXSi 서버를 관리하게 끔 했다. 즉 원격에서는 3389 포트를 사용하는 원격 데스크톱을 이용해 접속하여, 각각 존재하는 ESXi 서버를 관리하고, 그 안에서 Console 을 열어 관리한다.

만일 GUEST PC가 Windows라면, 마찬가지로, 각 Guest PC별로 MS-RDP 포트를 열고, 공유기에서도 그에 맞게 포트를 열어 관리했다. (물론 3389대신 다른 포트로 Open )

이처럼 했더니, 원격에서도 나름 원활하게 각 가상 PC들을 관리하는데 그나마 수월하게 할 수 있었다.

문제 발생

사실 운영에는 큰 문제가 없었는데, 갑자기 Linux를 Guest PC로 추가하려다 보니, 이게 또 다른 난제를 불러왔다. ESXi 관리 PC를 원격에서 연결한 상태에서 Console을 띄우니, 상당히 불편함을 가져왔다. 단순히 운영체제를 설치하는 정도면 그냥 저냥 참고 진행하면 되는데, 실제 운영체제 내부를 사용하려 할 때는 무척 불편함을 느낄 수 있다. 화면이 껌뻑임도 문제였고, 마우스나 키보드 잠김은 정말이지 짜증이 발생한다.
Windows 기반의 Guest PC는 그냥 MS-RDP 포트를 열어 직접 연결을 하면 되지만, Linux의 경우에는 그렇게 되기 힘들다. 물론 MS-RDP를 흉내넨 xRDP라는 것도 있지만, 매번 Guest OS가 Linux일 때마다 설치하기에는 한계가 있기 때문에, 이 작업은 아니다 싶다.

VNC

Open-Source로 원격에서 GUI 화면을 그대로 접속할 수 있는 Console 개념의 프로토콜이다. Open되어 있는 프로토콜이라, 이 유형을 가지고 제작된 제품군들은 생각보다 많다. 당연히 Linux 계통의 원격 접속은 대부분 이 VNC를 통해 접속하여 관리하게 한다.

다양한 제품군들이 있지만, 그 중 TigerVNC를 사용한다. 다른 여러 제품들이 있지만, 상용으로 전환된 제품도 있고, 성능상 이슈가 발생되는 제품들도 있다. 그 중 이 tigervnc는 현재도 지속적으로 업데이트되고 있으며, Linux 진영에서도 밀어주고 있는 제품이라고 한다.

http://tigervnc.org/

여기서는 VNC 서버는 ESXi 가 되고, 클라이언트만 있으면 된다.

준비 작업

이제 VNC를 통해 원격에서 해당 콘솔 화면을 열 수 있도록 한다. 이를 위해서는 몇 가지 준비 작업 및 권한들이 필요하다.

  1. 방화벽 관리
    인터넷 공유기나, 기타 방화벽 관련된 서비스 안에 ESXi 서버가 있는 상태에서 외부에서 접근할 때는 반드시 방화벽 관련 권한이 있어야 한다. 특정 포트를 열어주어야 하기 때문에, 그에 상응 하는 기술 능력이나, 접근 권한이 필요하다.
  2. SSH 접속 프로그램
    ESXi 서버 내부에 들어가 접근해야 하는데, 전용 클라이언트 도구가 아닌, Linux 로 된 EXSI 서버 자체를 접속해야 된다. 이 때문에, Telnet 기반의  SSH 접속 프로그램이 필요하다. 다양한 SSH 접속 프로그램이 있지만, 그중 무료로 제공되는 작은 제품인 Putty ( http://www.chiark.greenend.org.uk/~sgtatham/putty/ ) 을 사용하면 된다.
  3. ESXi 클라이언트
    기초적인 설정 작업은 EXSi 클라이언트를 통해서 진행하게 된다.

 

작업 ( VNC 활성화  )

기본적으로 설치는 되어 있지만, VNC에 대한 활성화가 안되어 있다. 이를 위한 몇 가지 작업을 수행해야 한다.
이 작업은 VNC로 연결할 VM 마다 해줘야 한다.

  1. EXSi 클라이언트를 실행한다.
    이미지 20140723_130018_001
  2. 설정을 할 VM을 선택 한 뒤, Edit Settings를 선택해서 Virtual Machine Properties 화면으로 들어간다.
    ( 단, 이미 실행 중인 VM인 경우 Shutdown 하고 난 뒤에 해야 한다.! )
    이미지 20140723_130158_001
  3. Virtual Machine Properties 화면에서 2번째 탭의 “Options” 안에 있는 General을 선택 한 뒤, “Configuration Paramters .. “ 버튼을 클릭한다.
    이미지 20140723_125723_001
  4. Configuration Paramters 창에서 하단에 위치한 “Add Row” 버튼을 눌러 새로운 줄을 생성한 뒤에, 다음 내용을 넣도록 한다.
    이미지 20140723_125920_001
    1. Name : RemoteDisplay.vnc.enabled
      Value : TRUE
    2. Name : RemoteDisplay.vnc.port
      Value : {원하는 연결 포트 번호 : 여기서는 15900 }
    3. Name : RemoteDisplay.vnc.password
      Value : {원하는 접속 암호 : 여기서는 P@ssw0rd

만일 VNC를 활성화할 VM이 더 있다면, 해당 VM을 선택해서 “2”번 단계를 반복하면 된다.

작업 ( SSH 연결 기능 활성화)

ESXi 서버를 SSH로 연결이 불가능한 경우를 위해서 작업하는 내용으로, 기존에 SSH로 연결할 수 있도록 설정되어 있다면 다음 작업으로 넘어간다.

  1. ESXi 클라이언트를 실행한다.
  2. Inventory 트리에서 최상위 노드를 선택한다.
    그리고 오른쪽 탭에서 Configuration을 선택한다.
    이미지 20140723_132737_001
  3. Configuration 탭 내에서 “Security Profile”을 선택한 뒤에 Services 영역에 위치한 “Properties”를 선택한다.
    이미지 20140723_132934_001
  4. Service Properties 창에서 SSH를 선택 한 뒤, Options를 선택한다.
    이미지 20140723_133125_001
  5. SSH Options 창에서 “Start” 버튼을 눌러주고 “OK” 하면 된다. (만일, 이후에도 계속 SSH 서비스를 이용할 예정이면, “Start and stop with host”를 선택하면 된다. )
    이미지 20140723_141507_001

작업 ( 방화벽 Open )

기본적으로 VPN을 위한 방화벽이 열려있지 않다. 그래서 이를 위해 별도로 방화벽을 열기 위한 구성을 해주어야 한다.

  1. SSH를 통해 ESXi 서버를 연결한다. (Putty 같은 SSH 연결 프로그램 사용 )
    이미지 20140723_141942_001
  2. root 계정으로 로그인한다
    이미지 20140723_142043_001
  3. firewall 디렉토리로 이동한다.
    cd /etc/vmware/firewall
  4. 다음 명령을 넣어, vnc.xml 파일을 만들어 연다.
    cat > vnc.xml
  5. 이제 다음 XML 파일 내용을 붙여 넣은 뒤, Ctrl + D를 눌러 저장한다.
    ( 안의 내용 중, port의 Begin과 End에 들어간 부분이 Open될 Port 번호의 시작과 끝 이므로, 적절하게 변경한다. )

  6. 다음 명령을 넣어, 저장한 XML 파일을 EXSi 서버에 등록한다.
    esxcli network firewall refresh
  7. 이제 EXSi 클라이언트로 돌아와, Host 최상위 노드 –> Configuration 탭 –> Security  Profile을 열어서, 하단에 위치한 Firewall을 보면, vnc라는 항목이 나타난다. ( 안나타났다면, XML 파일 오류일 가능성이 크므로, 3번 단계 부터 하나씩 다시 확인해봐야 한다.

 

작업 ( 방화벽 Open )

이 작업은 공유기 및 방화벽 S/W의 구성에 따라 다르므로, 별다른 언급은 하지 않는다. 다만, 해당 공유기에 맞게 위에서 설정된 Port 번호에 해당되도록 Open 해주어야 한다.

현재 필자의 경우 15900 ~ 15910 까지 Open되어 있어, 그에 맞게 방화벽을 수정했다.

 

연결 해보기

VNC 연결은 오로지 화면 콘솔만 제공되기 때문에, 실질적으로 연결을 하려면, VM 자체를 시작해야 한다.

  1. VNC로 연결할 VM을 실행한다.
  2. TightVNC를 실행한다.
  3. VNC 서버에 방화벽 밖에서 접근이 가능한 IP 주소를 입력하고, “:”를 사용하여 포트번호까지 입력한다.
    예를 들어 방화벽 바깥의 실제 IP가 121.223.10.5 이고, VNC Port를 15900으로 설정했으면,
    121.223.10.5:15900 이라고 주소 창에 입력하면 된다.

  4. Password 입력 창에 앞서 설정한 암호 값을 넣는다.

 

최종적으로 연결이 성공되면 아래 화면같이 현재 VM이 떠 있는 화면이 그대로 노출된다.


 

 

결론

처음 출발은 MS-RDP가 안되는 리눅스 콘솔들을 접속하는 방법 때문에 찾아서 적용해봤는데, 해보고 보니, 각종 Geust OS를 설치할 때도 유용하다는 생각이다. VNC 프로토콜 자체가 보안에 취약한 문제점이 있지만, 간단 간단하게 접근해서 사용한다면 나쁜 선택만은 아닌 것 같다. 만일 보안이 우려된다면, 방화벽 내에 VNC을 구성해서 연결하는 것도 방법일 것 같다.

VM 설정이나 변경 작업에는 유용하지 않다. 결국 방화벽 내에 EXSi 클라이언트가 동작하는 관리 PC는 어쩔 수 없이 존재해야 한다. 하지만, 외부에서 콘솔로 해당 PC의 화면을 그대로 보려고 할 때는 정말 유용한 것 같다.

글 내용 중, 일부 노출되기 꺼리는 부분을 모자이크 처리를 한 점에 대해 양해의 말씀을 드린다. 다만, 모자이크 내용으로 인해 설정이 어렵거나 힘든 부분은 없으므로, 모자이크 부분은 그냥 무시하시면 된다.

728x90
728x90

Java에서 보면 DateTime 대신, Calendar를 주로 사용한다.
아마도 지역마다 다른 이유나, 음력 등을 이유로 Date 개체로 처리하기에는 한계가 있어,
Date를 더욱 막강하게 만든 것 같다.

현재 이런 저런 구성 중에, 특정 일자의 이전, 이후에 대한 판단이 필요한 경우가 발생하는데,
Date 클래스에 있는 befere, after 처럼 Calendar에도 존재한다.

문제는 매번 짤 때 마다, 이 before, after 함수의 의미를 헷갈릴 때가 너무 많아서,
여기에 기억 되새김질 겸해서 적는다.

 

{Calendar 개체}.before({비교대상})

이 기본 문법인데, 이것을 이해하는 방법은 애석하게도 미국인 식으로 생각해주어야 한다.

{Calendar 개체} before then {비교대상}

즉 저 before 라는 의미는 “{비교대상}보다 {Calendar 개체}가 이전 인가?”라는 의미와 같다.

 

역으로 after는 다음과 같이 이해하면 된다.

{Calendar 개체}.after({비교대상})

이 기본 문법인데, 이것을 이해하는 방법은 아래와 같다.

{Calendar 개체} after then {비교대상}

즉, “{비교대상}보다 {Calendar 개체}가 이후 인가?”라는 의미와 같다.

 

아래와 같은 예제 코드를 실행 해보면 대충 짐작이 갈 것이다.

public void testCalendarAfterBefore()
{
	Calendar cal = Calendar.getInstance();
	Calendar calTester = (Calendar) cal.clone();
	calTester.roll(Calendar.DATE, 1);
	System.out.println(calTester.before(cal));
	System.out.println(cal.before(calTester));
}

위의 예제를 실행하면 이와 같은 결과를 얻을 수 있다.

false
true

 

cal 에는 현재 시간이, calTester에는 +1일 날짜가 담긴다.
즉, calTester가 cal보다 1일 더 큰 날짜이다.

이것을 위의 예제를 영어로 해석한다면,

calTester before then cal

cal before then calTester

이것을 한국말로 보자면,

calTester는 cal 보다 이전 날짜인가? 당연 false.

cal은 calTester 보다 이전 날짜인가? 당연 true.

 

단! 주의할 점은 저 비교는 모두 <. > 이지, 같은 것은 false 이다.

public void testCalendarAfterBefore()
{
	Calendar cal = Calendar.getInstance();
	Calendar calTester = (Calendar) cal.clone();
	
	System.out.println(calTester.before(cal));
	System.out.println(cal.before(calTester));
}

처음 예제 와는 다르게 아예 두 개가 같은 날인 경우 비교가 되지 않는다.
그래서 결과 값은 모두 false로 떨어진다.

false
false

만일 이전/이후 뿐만 아니라, 같거나 이전, 같거나 이후 이렇게 하려면,
같은지 여부를 반드시 먼저 체크해준 뒤에 이전/이후를 구분하여 처리해야 할 것 같다.

 

이 정도 적었으니, 잊어 버리진 않을 것 같다 ㅎㅎ.

728x90
  1. 개발자 하늘늑대 2017.03.07 05:39

    지금까지 currentTimemills()만 쓰다가 Calendar로 넘어오니 헷갈려서 검색해봤는데 바로 도움이 되는 글을 찾았네요 :)
    좋은 강좌 감사합니다.

728x90

앞의 포스트(Verisign에서 인증서 받기)에서 Verisign 인증서를 받는 소개를 할 때, Windows Logo 프로그램을 통하면, $99로 받을 수 있다는 점을 언급했습니다.

그런데, 이 부분을 명확히 해야 할 점이 있는데요.

저 프로모션을 사용하는 조건은 바로 Windows Logo에서 사용하라고 하는 점입니다. Windows Logo에서는 단순히 회사 인증만 하면 되기 때문에, 1년 짜리를 한 개 받으면 평생 회사 인증용으로 사용할 수 있습니다. 그래서 이 프로모션을 통해서 얻을 수 있는 인증서는 오로지 Code Sign용 인증서고 그 유효기간이 딱 1년 짜리라는 것입니다.
그러므로 https를 위한 SSL 인증서나, 3~5년 짜리 인증서를 받을 때는 아무 소용이 없다는 점을 꼭 기억해주세요.

얻는 방법은 아래와 같습니다.

  1. 먼저 http://winqual.microsoft.com 을 접속합니다.
    오른쪽에 있는 Digital IDs 부분에 “Offer details are avaliable here” 라는 문장이 있는데, 그 중 “here” 이라는 링크로 들어갑니다.
  2. 그러면 Winqual 에 대한 도움말 페이지가 뜹니다. 스크롤을 내려 맨 아래쪽에 보면, “Verisign ‘Microsoft Authenticode’ Code Signing Digital Certificate” 라는 문장이 있는데, 이 링크를 클릭합니다.
  3. 그러면 Verisign에서 Promotion 코드가 자동으로 들어간 페이지가 뜹니다. 여기서 One Year를 선택한 상태에서 계속 진행하시면 됩니다.
  4. 나머지는 이전 Post 내용을 참고하세요.
728x90
728x90

국내에서는 공인 인증서에 대해서 어느정도 익숙하게 접하는 편이다. 특히나 인터넷 은행 거래를 하려면 당연하게 공인 인증서를 쓰기 때문일 것이다. 하지만, 예전부터 Windows 안에서 다양한 형태로 공인인증서가 상당히 많이 활용되어 왔었다. HTTPS 로 시작되는 홈페이지들을 접속할 때도 활용되었고, 응용 프로그램을 설치할 때도 보게 되며, Active X 설치할 때 역시 사용한다.

이 인증서를 획득하는 방법에 대해서 간략하게 설명한다.

 

1. 인증서란.

Public key certificate 라는 것으로, 보통 Certificate 라고 언급한다. 자세한 설명은 위키피디아에서 “공인인증서”라는 항목을 검색하면 보다 더 자세하게 확인할 수 있다.

우리가 알아야 하는 것은 단지, Root 인증서와 인증서의 인증방법 만을 대략적으로만 알면 된다.
먼저 Windows 의 Run 창(실행창)에서 Certmgr.msc 라는 것을 치고 들어가면 인증서 관리 프로그램이 뜬다. Windows 안에 저장된 각종 인증서들을 관리하고 저장하는 곳인데, 여기서 “신뢰할 수 있는 루트 인증서” 라는 항목을 열어보도록 하자.

웹 브라우저 상에서 https 사이트에 접속하거나, 혹은 응용 프로그램을 설치할 때 인증서가 박혀 있는 경우 이 인증서가 정말 올바른 인증서인지 아닌지 판단할 때 중요한 역할을 하는 것이 바로 저 “신뢰할 수 있는 루트 인증서” 항목 안에 포함되어 있느냐 없는냐의 차이라고 볼 수 있다.

만일 인증서가 한 회사를 인증하는 인증서라면, 그 회사 이름이 knoie.com 이라면, knoie.com 이라는 인증서를 증명하기 위한 중간 인증서 정보가 담겨 있다. 그 중간 인증서 안에서는 이 인증서가 올바른 인증서 임을 증명하는 root 인증서가 있다. 그 root 인증서가 만료되거나 잘못된 것이 아닌지에 대한 정보를 바로 저 “신뢰할 수 있는 루트 인증서” 안에서 체크하게 된다.

“신뢰할 수 있는 루트 인증서”안을 보면 수많은 회사들을 볼 수 있는데, 그 중 Verisign도 쉽게 접할 수 있다.(알파벳 순서에 따라 맨 아래쪽에 위치해 있다.). 기묘하게도 MS에서는 Verisign을 많이 의존해서 인증서 처리를 한다. 최소한 Windows를 쓰면 Verisign은 빠지지 않고 들어가 있으며, 혹여 기간이 만료된 Root 인증서라도, Windows Update를 통해 만료된 인증서를 알아서 갈아치운다.

또, 이번에 Windows Logo 프로그램 가입작업을 했었는데, 그 때도 인증서 처리를 Verisign 으로 링크가 걸려 있었고, 사실 Verisign을 통해서 해야 정상적인 처리가 된다고 하니, 별 수 없이 Verisign으로 처리하게 되었다.

인증서 발급 부분도 결국 Verisign을 통해서 했기에 그 내용을 중심으로 설명한다.

 

2. 인증서 종류.

인증서의 분류를 하려면 한도 끝도 없지만, 여기서 언급할 인증서에서는 두 지로 나눌 수 있다.

2.1 SSL 인증서.

우리가 보통 HTTPS 라고 접속하는 방식이 있다. 암호화된 HTTP 방식인데, 보통 웹서버 인증서라고 부른다. 특정 웹서버에 특정 URL에 대해서 이 웹페이지들이 공식 인증된 사이트임을 알려줄 때 사용한다. 그리고 상호간 데이터를 송수신 할 때 사용되는 암호화 역시 이 인증서를 다리 삼아서 동작하게 된다.

여기서는 이 인증서와는 관계 없으므로 패스.

2.2 Code Signing 인증서

일반적으로 ActiveX 인증용 인증서라고 불린다. 정확히는 회사를 인증하기 위한 인증서인데, 공식 인증된 회사임을 표시하기 위해 회사명을 중심으로 나타내는 인증서이다. 여기서 만들어진 인증서를 통해 ActiveX의 OCX, DLL, CAP, MSI 등, 설치에 표시되는 인증서 이다.

배포자(Publisher) 라는 이름으로 붙는 내용 옆에 붙는 내용이 바로 그 내용인데, 특정 회사임을 증명하는 내용이다.
여기서는 이 Publisher에 인증된 회사임을 증명하는 인증서를 발급 받기 위한 작업을 보여준다.

3. Verisign 접속하기.

이곳에서 인증서를 구입하기 위해서는 Verisign 홈페이지에 접속해야 한다.
홈페이지 URL은 http://www.verisign.com 이다. 홈페이지에 접속하면 Front 화면에서 Code Signning 구입할 수 있는 링크가 있는데, 그 안으로 들어간다.

많은 종류의 Code Signning 종류들을 볼 수 있는데, 여기서 Code Signnig Certificate for Microsoft Authenticode를 선택한다.

인증서 계약 기간을 선택할 수 있다. 1년부터 3년까지. 발급 후 계약 기간에 벗어나면, 만료된 인증서라고 뜨게 되는데, 이 경우 갱신 처리를 하면 된다. 1년 짜리로 하는 경우 Code Signer Pro를 체크할 수 있는데, 긴급하게 Code Signing 하는건데, 굳이 필요는 없다. 마지막으로 Promotional Code 라고 있는데, 일종의 할인 쿠폰 같은 것이다.

MS의 Windows Logo 프로그램에서 제공하는 링크로 들어가면 상당히 저렴한 가격으로 1년 짜리 인증서를 $99 에 구입할 수 있다. ( 보통 $499 이다. ) Windows Logo 프로그램 사이트는 (http://winqual.microsoft.com 이다.)

그리고 Continue를 한다.

그러면, 전체적인 절차를 Overview 식으로 보여준다. 인지하고 Continue를 한다.

기술지원 담당자 정보를 넣는다. 이 인증서 발급 작업을 실제로 담당하는 사람의 인적정보를 넣는다. 해당 정보 중, 전화번호와 이메일 주소를 명확히 넣어야 한다. 그래야 연락 및 공지 등이 제대로 도착할 수 있다.

이제 코드 Signning을 하기 위한 중요한 정보를 넣는 창이 뜬다.

여기서 회사 이름 도시명 그리고 국가 등을 넣도록 한다. 이 정보들은 나중에 회사 인증을 할 때 사용되는 중요한 정보이다. 회사이름 등의 철자 등을 반드시 확인하고 넣도록 한다.
그리고 암호화 방식을 선택하는 창이 뜨는데, 대개는 기본값을 그대로 활용하도록 한다.

중간에 State/Province가 있는데, 서울 같은 곳은 별도의 “도” 단위의 값이 없으므로 Seoul로 반복해서 넣었다. 만일 경기도나, 충청남북도 인 경우 해당 “도”까지 넣어주면 된다.

입력 및 선택이 완료되었으면 Continue를 하도록 한다.

인증 받을 정보를 확인하는 창이다. 이 창을 다시 띄우는 목적 중 하나는 인증 받으려는 최종 정보가 올바른지 확인하는 것과 정보 변경을 할 때 사용되는 암호를 입력 받기 위한 부분이다. 인증 정보의 각 스펠링 및 위치 정보가 확실한지 확인하고, 틀리면 “Change Certificate Info”를 눌러 들어가서 수정하도록 한다.

Challenge phrase 부분에서는 중간에 인증 정보를 변경하려고 할 때, 확인용 암호를 넣는 부분인데, 처음 두 개의 칸 안에 적절한 암호를 넣도록 하고, 맨 아래 쪽에는 암호 분실 후 암호를 찾기 위한 질문의 값을 넣는다.

정상적으로 입력했으면 Continue를 클릭한다.

다음에 뜨는 창은 이 인증 정보의 조직의 대표자 정보를 넣는다. Verisign에서 회사 인증 할 때 맨 나중에 이 조직 대표자에게 연락을 해서 회사의 대표자 유무를 판단한다. 작은 회사면 그냥 사장님 정보를 넣을 수도 있지만, 큰 조직인 경우에는 대개 기술 담당자 정보를 그대로 활용하는 경우가 많다.

기술 담당자 정보와 동일하면 “ This contact is the same person as the Technical Contact” 라는 부분을 체크해주면 된다. 다르면 해당 정보를 앞의 기술 담당자 정보 넣듯이 넣어주면 된다. 역시 전화번호와 이메일 주소를 확실하게 확인하고 입력한다. 입력을 확인하면

다음은 결재 정보를 넣는다. 애석하게도 Verisign은 선불 방식이라 인증에 성공하든 실패하든 일단 지불부터 먼저 다. 나중에 문제가 발생하여 취소하는 경우 별도 고객센터에 연락해서 취소 요청을 해야 한다.’

지불 방법은 여러가지가 있지만, 국내에서 제대로 지불하는 방식은 신용카드 밖에는 마땅찮다. Credit Card를 선택하고, Card Type과 Card 번호, 그리고 카드 만료일 정도를 넣는다. 그리고 지불하는 사람에 대한 정보를 맨 아래 Enter Billing Contact Information에 넣는다. 지불 관련 문제가 있을 때 누구에게 연락을 할 것인지를 결정하는 부분인데, 대개 Technical Contact를 선택한다. 완료되었으면 Continue를 클릭한다.

이제 지불이 완료되면 최초 *.pvk 파일을 다운로드 받는다. 받고 싶은 위치를 결정해 저장하도록 한다.
이 파일은 인증서의 각종 변환 작업이나, 기타 인증 작업 때 반드시 필요한 파일이므로, 절대 분실하지 않도록 한다.
필요하면 USB 등을 통해 별도 보관해서 잃어버리는 일이 없도록 주의를 한다.

이제 Order Number를 크게 보여주면서, 결재 정보 및 인증에 사용된 각종 정보들을 볼 수 있는 창이 뜬다.Order Number를 적당한 메모장에 기록한다. 물론 Techincal Contact에 기록된 이메일로 해당 정보가 발송된다.
기록한 것이 분실되더라도, 이메일 등을 확인하면 표시해준다.

이제 http://www.verisign.com/status/ 페이지에 접속한다. 그리고 Order Number에 앞서 발급받은 Order Number를 넣는다. 그러면 현재 처리 내용에 대한 정보를 보여준다.

Payment를 제외한 나머지는 대부분 Pending에 있는데, 회사 인증을 위한 작업이 시간이 걸린다. 보통 Verisign에는 전세계 각 회사들에 대한 정보를 저장해 놓은 DB가 있는데, 그 안에 걸리면 대개 1~2일 후면 처리가 완료된다. 만일 처리하는데 시간이 걸리는 경우 kr-support@verisign.com 으로 메일을 보내도록 하자.

그러면 해당 담당자로 부터 메일이나 전화를 받을 수 있게 되는데, DB 정보가 없는 경우 다음과 같은 정보들이 준비되면 등록을 완료할 수 있다.

1. 사업자 등록증.

2. 3개월 이내 납부한 전화 요금 영수증(반드시 지로 납입용 영수증이여야 함).
    혹은 KT 114에 등록.
    주의할 점은 여기의 전화번호는 반드시 Organizational Contact에 있는 전화번호여야 한다.

사업자 등록증이나, 지로 영수증을 스캔해서 사본을 보내주면 대개 해결된다.
한국을 원하는 부서가 호주 혹은 미국에 있기 때문에, 팩스와 같은 방식으로 보내는 방법은 어려울 것 같다. 이 부분은 kr-support@verisign.com 으로 연락을 해서 증명할 수 있는 방법을 같이 고민하는 것이 좋다.

대개 처리가 완료될 즈음에 Organizational Contact 에 적힌 전화번호로 확인 전화가 온다. 대표자 명이 같은지 틀린지 등을 확인하게 되고, 간단한 질문을 한 뒤, 맞으면 처리가 완료된다.

모든 처리가 완료되면 메일을 통해 URL을 받을 수 있으며, 그 URL과 PIN 을 입력해서 들어가면 *.spc 파일을 다운로드 받을 수 있다.

앞 단계에서 받은 PVK 파일과 SPC 파일이 있으면 대부분의 Signning 처리를 수행할 수 있다.

 

4. 정리

별도로 캡처한 화면이 없어, 거짓으로 대충 입력한 화면을 캡처했고, 결재 이후 화면은 없다. 하지만 전반적인 설명은 어느 도 되었다고 생각된다.

Verisign에서 인증 받는 것은 생각보다 비용이 센 편인다. 물론 MS에서 제공하는 Promotion Code를 통해 $99에 살수도 있지만, 갱신하거나, Promotion Code 없이 사려면, 거의 4~50만원 돈이 된다. 더욱이 공식 인증된 서류인 사업자 등록증이 있어야 하고, 또한 일반전화까지 있어야 한다. 정식회사가 아닌 이상은 등록하기 무척 어렵다고 볼 수 있다.

하지만, 회사 차원에서 개발된 응용 프로그램을 설치할 때 Publisher 가 Unknown 으로 뜨거나, Active X가 설치 거부되는 문제가 있다면, 어차피 거쳐 지나가야 할 길이긴 하다.

이 Verisign 이라는 회사가 외국계라, 전체적인 처리가 힘든 부분도 있기는 하지만, 그런 부분이 있더라도 kr-support@verisign.com 을 통해 한국어로 문의를 주면 친절하게 답변을 준다.
이번 Microsoft Windows Logo 프로그램 처리 중에 제일 큰 애로사항이 바로 이 Verisign 처리였는데, 이번 기회에 많이 익힌 기분이다.

나중에 헷갈리는 일이 없도록 기록해 둔다.

728x90
  1. 절세리 2011.07.11 18:51

    좋은글 잘 봤습니다^^
    많은 도움이 되네요..
    혹시 궁금한게 있는데요
    코드사인 인증서를 사업자등록증 없이 받을 방법은 전혀 없나요?
    멍청한 ms에서 쓸데없이 익스8과9에 스마트스크린필터기능이란걸 넣었는데 인증서가 없다고 설치프로그램 다운로드까지 막아버리는군요..
    전세계에 개인개발자나 서비스 운영자들도 많은데 어쩌라는건지.. ㅡ,ㅡ
    개인도 인증서 구매하게 열어주든가.. 막막하네요..

    • Favicon of https://www.hind.pe.kr 하인도 2011.07.18 08:36 신고

      Verisign 밖에는 안해봐서 개인이 등록할 수 있는지 여부는 잘 모르겠습니다. 다른 인증서 업체 쪽을 확인해보시면 될지도 모르겠습니다. 이 인증서의 목적이 워낙 다목적인데다가, 회사 인증용 인증서다 보니, 사업자 단위의 체크를 하는 것 같습니다. 국내 쪽 코드 사이닝 관련 업체 쪽에 다가 전화로 문의해보시면 빠르게 되지 않을까 싶습니다. Verisign이 확실한 인증은 되지만, 코드 사이닝 같은 경우 Verisign을 고집하실 필요는 없을 것 같습니다.

  2. Favicon of http://blog.naver.com/hajunggu 하정구 2011.08.02 20:22

    해당 주소로 갔는데,,,
    window log 에서 베리사인 1년에 99달러라고 했는데
    없는 것 같은데 .. 어디로 가야 하는지 좀더 상세히좀 알려주시면 감사하겠습닏.

    • Favicon of https://www.hind.pe.kr 하인도 2011.08.05 15:29 신고

      캡쳐된 화면도 있고 해서 별도 Posting을 했습니다. http://www.hind.pe.kr/1124 이 링크로 가보시면 됩니다.

728x90

ConvertKML2GPX.zip

Google Map 혹은 Google Earth를 사용하면, 현재 찾은 위치값을 별도로 저장하는 방법을 제공합니다. 이 때 사용하는게 KMZ 혹은 KML 입니다. 위치 정보를 XML 형식으로 저장만 한 것이 KML 이고, 이를 압축한 것이 KMZ이더군요. 여기서는 압축해제 기능은 없으므로, KML을 중심으로 바라보도록 하겠습니다.

Google Earth를 통해 특정 위치를 저장하게 다음 대략 다음과 같은 Format의 데이터를 볼 수 있습니다.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
    <name>기온 거리 입구.kml</name>
    <Style id="sn_ylw-pushpin12">
        <IconStyle>
            <scale>1.1</scale>
            <Icon>
                <href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href>
            </Icon>
            <hotSpot x="20" y="2" xunits="pixels" yunits="pixels"/>
        </IconStyle>
    </Style>
    <StyleMap id="msn_ylw-pushpin0">
        <Pair>
            <key>normal</key>
            <styleUrl>#sn_ylw-pushpin12</styleUrl>
        </Pair>
        <Pair>
            <key>highlight</key>
            <styleUrl>#sh_ylw-pushpin6</styleUrl>
        </Pair>
    </StyleMap>
    <Style id="sh_ylw-pushpin6">
        <IconStyle>
            <scale>1.3</scale>
            <Icon>
                <href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href>
            </Icon>
            <hotSpot x="20" y="2" xunits="pixels" yunits="pixels"/>
        </IconStyle>
    </Style>
    <Placemark>
        <name>기온 거리 입구</name>
        <LookAt>
            <longitude>135.7768254558997</longitude>
            <latitude>35.00373926533617</latitude>
            <altitude>0</altitude>
            <heading>-0.0001637968873225001</heading>
            <tilt>0</tilt>
            <range>639.2308830322888</range>
            <altitudeMode>relativeToGround</altitudeMode>
            <gx:altitudeMode>relativeToSeaFloor</gx:altitudeMode>
        </LookAt>
        <styleUrl>#msn_ylw-pushpin0</styleUrl>
        <Point>
            <altitudeMode>absolute</altitudeMode>
            <coordinates>135.7771083872684,35.00372287912489,46.1143527964634</coordinates>
        </Point>
    </Placemark>
</Document>
</kml>

이 값을 GPX로 변경해주는 사이트가 있는데, 그 사이트를 통해 변환해 보면, 대략 다음과 같이 표시됩니다.
http://www.gpsvisualizer.com/convert?output

<?xml version="1.0" ?>
- <gpx creator="GPS Visualizer http://www.gpsvisualizer.com/" version="1.0" xmlns="http://www.topografix.com/GPX/1/0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">
- <wpt lat="35.003722879" lon="135.777108387">
  <ele>46.1143527964634</ele>
  <name>기온 거리 입구</name>
  <sym>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</sym>
  </wpt>
  </gpx>

상당히 단순해진 모양을 볼 수 있는데, 대략 사용되는 값은 lat, lon, ele 그리고 name과 sym입니다. 굳이 내용을 살펴보면

latitude 라는 값, longitude 라는 값과 함께, element 값으로 구성된 좌표 정보와, 이 좌표에 대한 이름, 그리고 이 위치 값을 표시하기 위한 아이콘 이미지 위치(보통 URL)값으로 변한 것을 볼 수 있습니다.
이 중 latitude, longitude, element 값을 가져 올 때, /Document/Placemark/Point/coordinates 에 담긴
값을 사용하면 됩니다. 그 외에 /Document/Placemark/Point/name 에 있는 값을 name 으로 사용하면 됩니다.
마지막으로 아이콘은 /Document/Style/IconStyle/Icon/href 안의 값을 사용하면 됩니다.

이 작업은 Xml의 XPath를 통해 필요한 데이터를 조회하면 됩니다.
단지 문제는 namespace 부분만 고려해서 구성하면 됩니다.

이 자료의 소스는 여기의 첨부파일로 등록하였습니다. 이 자료는 Visual Studio 2010 으로 되어 있읍니다.
실행하면, 특정 폴더를 선택하면, 그 폴더에 있는 모든 KML 파일들을 읽고 그 안의 이름대로 GPX 파일을 생성하는 것입니다. 자세한 내용은 안의 소스를 참고하시면 됩니다. 또한 이 모든 것은 .NET Framework 2.0 기반으로 구성되어 있어, 큰 문제 없이 실행하실 수 있을 겁니다.

728x90

+ Recent posts

728x90