Subject: Dubuild로 Signed Applet 만들기
From: <Microsoft Internet Explorer 5가 저장>
Date: Sat, 15 Sep 2001 02:59:18 +0900

Signed
Applet

In
Explorer

<Using
dubuild.exe>

● 이 문서는 웹에 있는 정보들을 제 나름대로 정리한 것입니다.

1. Microsoft SDK for
JAVA(http://www.microsoft.com/java/)를 다운 로드 한 후 설치한다.

2. 설치한 Microsoft SDK for JAVA의 bin 디렉토리를 path에 설정해 준다.

예, path = %path%;E:\Program Files\Microsoft SDK for Java
4.0\bin

3. makecert 명령어를 사용하여 인증서를 생성한다.

makecert -sk [인증서 별명] -n "CN=[인증 이름]" [인증서 화일명]

-.
공개키와 비밀키 쌍이 생성되어지고, 비밀키는 레지스트리에 저장된다.

-. 인증서가 주어진 파일명으로 생성된다.

예, makecert -sk RayCertification -n
"CN=Raytrust Org." RayCertification.cer

è RayCertification.cer 파일이 생성된다.

4. java
코드에 sign을 할 때, .spc 형식의 서명 파일이 필요하므로 cert2spc
명령을 사용하여 .cer 서명 파일에서 .spc 형식의 서명 파일을 만든다.

cert2spc [인증서 화일명] [.spc 화일]

예 > cert2spc
RayCertification.cer RayCertification.spc

è RayCertification.spc 파일이 생성된다.

5.
서명이 필요한 파일들을 dubuild 명령을 사용하여 cab 형식의 파일로 만든다.

dubuild [.cab 파일] [path] /D [“frindlyname”] /I
[pattern] /V [version]

예 > dubuild SignedRayApplet.cab
. /D "RaySignTest" /I *.class /V 1,1,1,1

è SignedRayApplet.cab 파일이 생성된다.

6.
signcode 명령어를 사용하여 앞에서 만든 인증서를 cab 파일에 포함 시키고, 레지스트리의 비밀키로 서명을 한다.

signcode -j javasign.dll -jp [레벨] -spc [.spc 파일] –k [key 이름] [.cab 파일]

예 > signcode -j javasign.dll -jp
LowX -spc RayCertification.spc -k RayCertification
SignedRayApplet.cab

è Sign된 SignedRayApplet.cab
파일이 된다.

7. html
페이지에 다음과 같이 넣는다.

<applet
code="org.raytrust.RayApplet.class"
width=320 height=270>

<param name=useslibrary value='RaySignTest'>

<param name=useslibraryversion value='1,1,1,1'>

<param name=useslibrarycodebase value='SignedRayApplet.cab'>

</applet>

****
주의!!!!
****

위의
html 코드에서
음영으로
표시된
부분들은
적절하게
바꾸어줘야
한다.

첫번째의
경우
정확하게
사용한
패키지명을
적어주면
된다.

두번째의
경우
dubuild.exe 명령
사용시
/D 옵션으로
주었던
friendlyname과
일치해야
한다.

셋번째의
경우
dubuild.exe 명령
사용시
/V 옵션으로
주었던
version과
일치해야
한다.

네번째의
경우
dubuild.exe 명령
사용시
이용했던
cab 파일
이름과
일치해야
한다.

8.
위와 같이 하면, 클라이언트가 연결 되었을 때 윈도우가 뜨면서 인증할 것인지를 물어 봅니다. 여기서, YES를 해주면 모든 권한을 가지게 된다.

일부의 권한만을 주기 위해서는 프로그램 내부에서 다음과 같이 해 주면 된다.

if (Class.forName("com.ms.security.PolicyEngine")!=null) {

PolicyEngine.assertPermission(PermissionID.FILEIO);

}

위의 예제 중에서 다음 부분에 여러 가지 권한들을 부여할 수 있다.

PolicyEngine.assertPermission(PermissionID.???????);

”???????” 부분은 다음과 같은 ID가 올 수 있습니다.

1. SYSTEM
2. FILEIO
3.
NETIO
4. THREAD
5. PROPERTY
6. EXEC
7. REFLECTION
8.
PRINTING
9. SECURITY
10. REGISTRY
11. CLIENTSTORE
12. UI
13.
SYSSTREAMS
14. USERFILEIO
15. MULTIMEDIA

l
참고 : 문서를 참고하면 SYSTEM 권한을 주면 모든 권한을 준다고 합니다. 그러나 실제로 위치와 관련하여 실행되지 않는 경우가 있는 것 같습니다. 예를 들어, FILEIO 같은 경우가 꼭 파일에 접근하는 메서드에서 설정해줘야 합니다. 위치와 관련된 문제로 권한이 주어지지 않는 경우입니다. 예를 들어, 맨 처음에 SYSTEM 권한을 준다고 해도 SYSTEM 권한을 주는 메서드가 아닌 다른 메서드에서 파일에 접근 하려고 하면 에러가 발생합니다. 그러므로, 자기가
쓰고자
하는
권한을
꼭!
필요한
위치에서
주어서
사용하시기
바랍니다.

l
질문이나 기타 문의사항은 http://my.dreamwiz.com/raytrust의 “묻고 답하기” 게시판을 이용해 주시기 바랍니다. 제가 아는 한도 내에서 자세하게 설명해 드리겠습니다.

l
그리고 여기서 package를 사용한 이유가 있습니다. Package를 사용하지 않으면 CAB파일에서 class파일을 찾지 못하더군요. Package를 사용하지 않아도 class파일을 찾는 방법이 있을텐데 아직도 찾지를 못한 것 같습니다. 우선은 예제처럼 package를 사용하시기 바랍니다. 그럼 쉽게 구현 가능하시리라 생각합니다.

l
또 하나, dubuild.exe를 사용하는 가장 중요한 이유는 인증창이 한번만 뜬다는 것입니다. cabarc.exe를 사용하면 브라우저가 다시 실행될 때마다 인증창이 떠서 인증을 요구합니다. 그러나 dubuild.exe를 사용하면 버전이 업그레이드 되지 않는 한 인증창이 떠서 인증을 요구하지 않습니다..^^*

l
유용하게 사용하시기 바랍니다.

l
마지막으로 다음은 제가 사용했던 배치 파일의 내용입니다.
1: makecert -sk
RayCertification -n "CN=Raytrust Org." RayCertification.cer
2: cert2spc
RayCertification.cer RayCertification.spc
3: dubuild SignedRayApplet.cab . /D
"RaySignTest" /I *.class /V 1,1,1,1
4: signcode -j javasign.dll -jp LowX -spc
RayCertification.spc
-k RayCertification
SignedRayApplet.cab
주의!!! 마지막줄(4라인)과 그 다음줄은 한 줄에 써 주셔야 하는 거 아시죠?

Copyright
© 2001 Oh Kwang Shin.

All
Rights Reserved.