일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- NIO
- 자바암호
- 자바네트워크
- 코틀린
- oracle
- spring data jpa
- 고전역학
- 소프트웨어공학
- Database
- write by GPT-4
- 리눅스
- 데이터베이스
- 인프라
- 시스템
- android
- 자바
- GPT-4's answer
- flet
- spring integration
- jpa
- 유닉스
- 역학
- 파이썬
- JVM
- chatGPT's answer
- write by chatGPT
- python
- Java
- 웹 크롤링
- kotlin
- Today
- Total
기억을 지배하는 기록
자바을 이용한 암호학 - 12 본문
RSA-Signed Applet
전 애플릿 UsernameApplet을 RSA 서명 애플릿으로 작성해보도록 한다.
애플시 서명은 JDK에 포함되어 있는 jarsigner 툴을 이용하여 작성한다.
동작 순서
자바 플러그인 태그(OBJECT…)가 포함된 HTML 웹 페이지를 브라우저가 로드할 때, 자바 플로그인을 실행 시키고 애플릿의 로딩과 실행을 맡긴다. 플러그인은 애플릿을 다운로드하고 전자 서명을 체크한다. 만약 RSA 서명이 발견되면 플러그인은 java.policy 파일에 정의 된 보안 정책을 검사한다. 만약 코드 출처가(코드베이스와 서명자)가 해당 되는 엔트리에 있으면 java.lang.RuntimePermission usePolicy 권한이 설정 되어있는지 체크한다. 만약 설정 되어 있다면 정책에 정의된 권한을 사용한다. 그렇지 않다면 애플릿 서명자의 인증서를 체크한다. 만약 서명이 신뢰받는 CA의 것으로 판면되면 현재 실행되는 애플릿에게 AllPermission을 주어도 되는지 사용자에게 물어본다.
서명하기
1. RSA 키생성
D:java1.4bin>keytool -genkey -alias appletSigned -keyalg RSA keystore 암호를 입력하십시오: hurukku 이름과 성을 입력하십시오. [Unknown]: Hurukku 조직 단위 이름을 입력하십시오. [Unknown]: Dev 조직 이름을 입력하십시오. [Unknown]: ITDev 구/군/시 이름을 입력하십시오? [Unknown]: SEOUL 시/도 이름을 입력하십시오. [Unknown]: SEOUL 이 조직의 두 자리 국가 코드를 입력하십시오. [Unknown]: KO CN=Hurukku, OU=Dev, O=ITDev, L=SEOUL, ST=SEOUL, C=KO이(가) 맞습니까? [아니오]: Y <appletSigned>에 대한 키 암호를 입력하십시오 (keystore 암호와 같은 경우 RETURN을 누르십시오): |
2. 인증서 설치(CA인증서가 없을 때)
D:java1.4bin>keytool -export -alias appletSigned -file appletSigned.cer keystore 암호를 입력하십시오: hurukku 인증서가 <appletSigned.cer> 파일에 저장되었습니다. |
생성된 인증서를 클릭한다.
위의 Install Certificate 버튼을 클릭하여 인증서를 설치한다.
3. 기존 CA인증서가 있는 경우
Keytool –import –alias appletSigned –file [CA 인증서] |
4. JAR 파일 서명하기
c:developmentCryptographyAppletSigningclasses>jar cvf UsernameApplet.jar com 추가된 manifest 추가 중: com/(내부 = 0) (외부= 0)(0%가 저장되었습니다.) 추가 중: com/crypto/(내부 = 0) (외부= 0)(0%가 저장되었습니다.) 추가 중: com/crypto/MS/(내부 = 0) (외부= 0)(0%가 저장되었습니다.) 추가 중: com/crypto/UsernameApplet.class(내부 = 1145) (외부= 635)(44%가 감소되었습니다.) c:developmentCryptographyAppletSigningclasses>jarsigner UsernameApplet.jar appletSigned Enter Passphrase for keystore: hurukku c:developmentCryptographyAppletSigningclasses> |
실행
Html 파일(htmlconverter을 이용)
<HTML> <HEAD> <TITLE> Username Applet </TITLE> </HEAD> <BODY> <!--"CONVERTED_APPLET"--> <!-- HTML CONVERTER --> <OBJECT classid = "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" codebase = "http://java.sun.com/update/1.4.2/jinstall-1_4-windows-i586.cab#Version=1,4,0,0" WIDTH = 300 HEIGHT = 200 > <PARAM NAME = CODE VALUE = "com.crypto.UsernameApplet.class" > <PARAM NAME = ARCHIVE VALUE = "UsernameApplet.jar" > <PARAM NAME = "type" VALUE = "application/x-java-applet;version=1.4"> <PARAM NAME = "scriptable" VALUE = "false"> <COMMENT> <EMBED type = "application/x-java-applet;version=1.4" CODE = "com.crypto.UsernameApplet.class" ARCHIVE = "UsernameApplet.jar" WIDTH = 300 HEIGHT = 200 scriptable = false pluginspage = "http://java.sun.com/products/plugin/index.html#download"> <NOEMBED> </NOEMBED> </EMBED> </COMMENT> </OBJECT> <!-- <APPLET CODE = "com.crypto.UsernameApplet.class" ARCHIVE = "UsernameApplet.jar" WIDTH = 300 HEIGHT = 200> </APPLET> --> <!--"END_CONVERTED_APPLET"--> </BODY> </HTML> |
'오래된글 > Java' 카테고리의 다른 글
테스트 지향 프로그래밍 with JUnit - 1 (0) | 2018.04.07 |
---|---|
자카르타 프로젝트 HttpClient와 FileUpload 사용하기 (0) | 2018.04.07 |
자바을 이용한 암호학 - 11 (0) | 2018.04.07 |
자바을 이용한 암호학 - 10 (0) | 2018.04.07 |
자바을 이용한 암호학 - 9 (0) | 2018.04.07 |