Java WebStart를 이용하기 위한 설정 및 테스트
http://docs.oracle.com/javase/tutorial/deployment/webstart/deploying.html
http://docs.oracle.com/javase/8/docs/technotes/guides/jweb/security/signedJNLP.html
http://docs.oracle.com/javase/tutorial/deployment/jar/signing.html
https://netbeans.org/kb/73/java/javase-jws.html
http://www.java.com/ko/download/help/jcp_security.xml
http://www.java.com/ko/download/faq/exception_sitelist.xml
테스트 환경
- JDK 1.7
- NetBeans 8
- Windows 7
- Tomcat 7
설정순서
- keytool 설정
- NetBeans 프로젝트에서 WebStart 설정 및 키를 이용한 Signed JAR 생성 (*.JAR, *.JNLP, *.HTML 파일이 생성됨)
- 위에서 생성된 파일을 웹사이트에 복사
- Java 제어판에서 보안수준 설정 및 예외 사이트 목록 작성
- 웹브라우저로 웹사이트의 HTML 파일에 접속
Java keytool.exe 를 이용하여 keystore와 key를 생성한다 (아래 참조)
Command Prompt 를 이용하여 JDK가 설치된 디렉토리로 이동하여 다음과 같이 명령한다
아직 키가 생성되지 않았다면 오류가 발생한다.
C:\Program Files\Java\jdk1.7.0_55\bin>keytool -list
keytool 오류: java.lang.Exception: 키 저장소 파일이 존재하지 않음: C:\Users\duniv6-000\.keystore
다음과 같은 명령으로 키를 생성하면 keystore 파일도 함께 생성된다
keystore 비밀번호와 key 비밀번호를 요구하므로 6자 이상으로 적절히 입력한다
아래에서 사용된 비밀번호와 -alias는 키에 대한 별칭이며 키를 이용해 Jar 파일에 전자서명을 할 때 사용된다
C:\Program Files\Java\jdk1.7.0_55\bin>keytool -genkey -alias WebStartPublisher
키 저장소 비밀번호 입력:
새 비밀번호 다시 입력:
이름과 성을 입력하십시오.
[Unknown]: WSTester
조직 단위 이름을 입력하십시오.
[Unknown]:
조직 이름을 입력하십시오.
[Unknown]:
구/군/시 이름을 입력하십시오?
[Unknown]:
시/도 이름을 입력하십시오.
[Unknown]:
이 조직의 두 자리 국가 코드를 입력하십시오.
[Unknown]:
CN=WSTester, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown이(가) 맞습니까?
[아니오]: y
<WebStartPublisher>에 대한 키 비밀번호를 입력하십시오.
(키 저장소 비밀번호와 동일한 경우 Enter 키를 누름):
C:\Program Files\Java\jdk1.7.0_55\bin>
키를 생성한 후에 다시 키를 확인하기 위해 다음과 같이 명령해본다
C:\Program Files\Java\jdk1.7.0_55\bin>keytool -list
키 저장소 비밀번호 입력:
키 저장소 유형: JKS
키 저장소 제공자: SUN
키 저장소에 1개의 항목이 포함되어 있습니다.
webstartpublisher, 2014. 6. 17, PrivateKeyEntry,
인증서 지문(SHA1): 02:B0:6F:72:EE:F0:16:F5:40:96:81:3A:CC:19:7C:B0:8C:1E:71:8F
C:\Program Files\Java\jdk1.7.0_55\bin>
키 삭제 명령에서는 키를 생성할 때 사용했던 별칭을 입력한다
C:\Program Files\Java\jdk1.7.0_55\bin>keytool -delete -alias webstartpublisher
키 저장소 비밀번호 입력:
C:\Program Files\Java\jdk1.7.0_55\bin>keytool -list
키 저장소 비밀번호 입력:
키 저장소 유형: JKS
키 저장소 제공자: SUN
키 저장소에 0개의 항목이 포함되어 있습니다.
C:\Program Files\Java\jdk1.7.0_55\bin>
다음과 같이 한꺼번에 모든 정보를 입력하고 키를 생성할 수 있다. 키의 비밀번호는 6자 이상으로 구성해야 한다
C:\Program Files\Java\jdk1.7.0_55\bin>keytool -genkey -alias webstartpublisher -dname "CN=WSTester" -storepass 00000 -keypass 00000
keytool 오류: java.lang.Exception: 키 비밀번호는 6자 이상이어야 합니다.
C:\Program Files\Java\jdk1.7.0_55\bin>keytool -genkey -alias webstartpublisher -dname "CN=WSTester" -storepass 000000 -keypass 000000
C:\Program Files\Java\jdk1.7.0_55\bin>
C:\Program Files\Java\jdk1.7.0_55\bin>keytool -list -storepass 000000
키 저장소 유형: JKS
키 저장소 제공자: SUN
키 저장소에 1개의 항목이 포함되어 있습니다.
webstartpublisher, 2014. 6. 17, PrivateKeyEntry,
인증서 지문(SHA1): 14:61:C1:6C:8C:D6:E5:17:D3:F8:DD:8C:6D:D5:55:DB:EC:92:27:1F
C:\Program Files\Java\jdk1.7.0_55\bin>
*.keystore 파일이 디폴트 폴더에 생성되는 것보다 지정된 폴더 안에 생성되도록 하면 keystore 파일의 위치를 찾지못해서 생기는 어려움을 피할 수 있다.
다음과 같이 keystore 파일이 생성될 위치와 파일명까지 지정할 수 있다
C:\Program Files\Java\jdk1.7.0_55\bin>keytool -keystore d:\test\my.keystore -genkey -alias WebStartPublisher -dname "CN=WSTester" -storepass 000000 -keypass 000000
C:\Program Files\Java\jdk1.7.0_55\bin>
특정 keystore 에 저장된 key를 확인하려면 명령에 keystore 파일의 경로를 입력해주면 된다
C:\Program Files\Java\jdk1.7.0_55\bin>keytool -list -storepass 000000 -keystore d:\test\my.keystore
키 저장소 유형: JKS
키 저장소 제공자: SUN
키 저장소에 1개의 항목이 포함되어 있습니다.
webstartpublisher, 2014. 6. 17, PrivateKeyEntry,
인증서 지문(SHA1): DB:88:24:85:F5:A6:0D:7D:56:C7:9C:A8:C7:42:AE:86:D2:BD:A1:EA
C:\Program Files\Java\jdk1.7.0_55\bin>