티스토리 뷰
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNo=20&no=399653&ref=399625
ActiveX는 보통 웹이나 VB에 붙는데 웹에 붙는거 볼까요
엑티브 컨트롤 웹 페이지 만들기
-------------------------------
먼저 OCX를 VC++의 ActiveX Continer에서 Register한다.
그리고 VC++의 Enterprise툴인 OLE View ( OLE/COM Viewer)를 실행한후 내가 등록한 컨트롤의 CLSID나 object 태그를 얻어낸다.
보통 Control[+] 안에 등록되어 있다.
원하는 컨트롤에서 오른클릭후 copy <object> tag 한다음 html페이지에서 복사하기 하면 오브젝 태그가 완성이 된다.
실행하면 웹페이지에서 자신이 만든 컨트롤을 볼수 있다.
<HTML><BODY>
<object
classid="clsid:D558994B-F7F4-11D2-9559-0060971DB6FE"
</object>
</BODY>
</HTML>
이렇게하면 클라이언트에 클래스아이디가 위와 같은 컨트롤을 활성한다.
<HTML><BODY>
<object
classid="clsid:D558994B-F7F4-11D2-9559-0060971DB6FE"
codebase="http://www.bro.com/test.ocx">
</object>
</BODY>
</HTML>
이렇게하면 클라이언트에 컨트롤이 없을경우 codebase에 명시된 곳의 컨트롤을 얻어와서 실행한다.
만일 CAB파일을 만들었다면
<HTML><BODY>
<object
classid="clsid:D558994B-F7F4-11D2-9559-0060971DB6FE"
codebase="http://www.bro.com/test.cab#version=1,0,0,0">
</object>
</BODY>
</HTML>
이런식으로 할 수 있다. #version은 안붙여도 되지만 붙이면 버전이 높으면 다운을 받을수있다.
그러나 디지털 서명 보증서가 없는 CAB파일은 클라이언트 웹브라우저의 인터넷 보안옵션이 보통이나 높음이면 다운을 하지 않고 안전하지 않은 컨트롤이라고 다운도 안한다. ( 클라이언트가 낮은 보안으로 낮추면 받으면 후회할꺼라는 경고가 뜨면서 받곘는가 물어본다)
따라서 보증서 디지털 서명이 필요하다.
===============
자 그렇다면 디지털 서명에 대해서 알아볼까요?
인터넷 다운 설치를 위한 캐비닛/보증서 만들기
---------------------------------------------
엑티브 컨트롤의 캐비닛/보증서 만들기
준비물 :
컨트롤 test.ocx
캐비닛 보증서만들기 위한 SDK ( CAB SDK/ INet SDK )
캐비닛 파일을 만들기
--------------------
캐비닛 파일은 MS에서 만든 Zip방식의 (LZX) 압축 파일이다.
이 압축파일은 MS 윈도 플랫폼의 자동설치를 위해서 쓰인다.
캐비닛 파일을 만들기 위해선 CAB SDK를 구해야 한다.
편리하게 CAB을 만들기위한 툴인 CAB Man (Cab Manager, MS ) 나 CabPack (프리웨어)를 쓰면 된다.
캐비닛 파일을 단지 압축용으로 쓴다면 inf파일 첨부없이 압축을 하면 되지만 압축이 풀릴 디렉토리 ActiveX컨트롤시 RegisterServer할것인지를 명시할때는 inf파일로 압축 풀기시 풀기 세팅을 맞출수 있다.
다음은 간단한 INF 예제이다.
-------------------[ test.inf ]---------------------------
[version]
signature="SCHICAGOS"
AdvanceINF=2.0
[Add.Code]
test.ocx=test.ocx
[test.ocx]
file-win32-x86=thiscab
classid={D558994B-F7F4-11D2-9559-0060971DB6FE}
FileVersion=1,0,0,0
RegisterServer=yes
;end of file
--------------[ test.ocx만 cab만들기 ]--------------------
file-win32-x86은 x86플랫폼에 이 파일이 있는 곳을 정해주는것으로 thiscab은 이 cab에 있다는 말이고,
file-win43-x86=http://www.bro.com/mydir/test.ocx 로 하면 그 사이트로 가서 다운을 받게 된다.
FileVersion은 해당 파일의 오른클릭후 등록정보메뉴에서 버전탭을 보면 알 수 있다.
만일 ocx 파일 외에 다른 dll 파일도 있다고 한다면
-------------------[ test2.inf ]---------------------------
[version]
signature="SCHICAGOS"
AdvanceINF=2.0
[Add.Code]
test.ocx=test.ocx
test.dll=test.dll
[test.dll]
file-win32-x86=thiscab
FileVersion=1,0,0,0
DestDir=11
RegisterServer=yes
[test.ocx]
file-win32-x86=thiscab
classid={D558994B-F7F4-11D2-9559-0060971DB6FE}
FileVersion=1,0,0,0
RegisterServer=yes
;end of file
-----------[ test.ocx와 test.dll로 cab만들기 ]-----------------
이렇게 해주면 된다. 이때 DestDir은 11은 윈도시스템디렉토리( WINDOWS\SYSTEM 또는 WINNT32\SYSTEM32) 10은 윈도우 디렉토리 (WNIDOWS 또는 WINNT32) DestDir을 지정안하면 OCCACHE 디레고리로 지정된다.
캐비닛 파일 만들기
inf파일이 필요 없이 그냥 만들때는 CabPack이나 CABMan같은것으로 쉽게 만들고 (물론 안에도 기능으로 inf파일 첨부 할수있다. ) 다음은 CAB SDK를 써서 할 경우 이다.
cabarc -s 6144 n test.cab test.ocx test.inf
또는
cabarc -s 6144 n test.cab test.ocx test.dll test2.inf
을 하게 되면 test.cab이 생기게 된다.
-s 크기 : 디지털 서명을 위한 영역의 크기(6114는 6K바이트)
n : 새로운 캐비닛 파일을 만듬
이제 test.cab파일이 생겼다.
디지털 서명 보증서 만들기
---------------------------
INet SDK 에 있는 프로그램으로 보증서를 만들게 되는데 이는 원래 VerSign같은 인증기관(CA,Certification Authority)로 부터 SPC (Software Publisher Ceritificate)를 얻어야 하는데, 상업용 SPC를 얻길 원하면 http://digitalid.versign.com/cdesign.htm을 가보자.
테스트용 SPC를 만들기
1. 보증 확인 과정을 제어하는 레지스트리 키 설정
SETREG 1 TRUE
2. 테스트용 x.509 보증서를 생성하기
MAKESERT -n "CN=조경민 보증서" -sv Test.pvk test.cer
이렇게 하면 test.pvk라는 사적 키(private key)파일과 cer 회사보증서 파일이 생긴다. 이때 윈도로 암호를 넣으라고 한다. 암호 만들기
3. 테스트 보증서에서 테스트용 SPC를 만들기
CERT2SPC test.cer test.spc
이렇게하면 spc파일이 생긴다.
CAB 파일에 디지털 서명 보증서 추가하기
--------------------------------------
SIGNCODE -spc test.spc -v test.pvk -n "test ocx" test.cab
이렇게하면 CAB파일에 보증서가 붙게 된다.
물론 보증서는 CAB이 아니라 OCX나 DLL파일에 붙일수도 있다.
1999년 5월 15일 PM 07:29
조경민 Visual C++ 6.0 ATL COM,전병선저 참고