2012-01-16 3 views
1

oraclevelocity review과 같은 많은 링크가 검색되었지만 stackoverlow도 검색되었지만 여전히 성공하지 못했습니다.자체 서명 된 애플릿이 전체 권한을 얻지 못했습니다.

요점은 간단합니다. Jar는 다음을 사용하여 서명됩니다.

keytool -genkey -alias signFiles -keystore compstore -keypass bca321 -dname "cn=test" -storepass abc123 
jarsigner -keystore compstore -storepass abc123 -keypass bca321 -signedjar SignedJar.jar UnsignedJar.jar signFiles 

그리고 로컬 시스템에서 완벽하게 실행됩니다.

java.security.AccessControlException: access denied (javax.smartcardio.CardPermission Broadcom Corp Contacted SmartCard 0 connect) 
    at java.security.AccessControlContext.checkPermission(Unknown Source) 
    at java.security.AccessController.checkPermission(Unknown Source) 
    at java.lang.SecurityManager.checkPermission(Unknown Source) 
    at sun.security.smartcardio.TerminalImpl.connect(Unknown Source) 

예, 그것은 읽기를 시도 : - SignedJar.jar가 HTTP (S)를 통해 애플릿처럼 사용할 때, 사용자가 인증서 (IE 또는 FF 또는 크롬 차이가 없음) 받아 들인다하더라도, 그것은 작업 중지 터미널에 삽입 된 스마트 카드에서 가져오고 connect 호출시 예외를 가져옵니다.

예,이 방법도 시도했다 :

AccessController.doPrivileged(new PrivilegedAction() { 
... 

하지만 행운과

. 그렇다면 잡는 곳은 어디입니까? 사전에

감사합니다, 키릴 오늘이 문제에 실행

+0

참조 : 여기

명령 줄입니다 CardPermission에 대한 권한 부여 방법에 대한 자세한 내용은 다음을 참조하십시오.) {grant javax.smartcardio.CardPermission Broadcom Corp SmartCard에 문의했습니다. 0 ","connect "; }; '[link] (http://java.sun.com/developer/onlineTraining/Programming/JDCBook/appA.html#know) –

+0

도서관을 포함하여 모든 코드에 서명 했습니까? (동일한 서명을 사용하고 매니페스트에 '신뢰할 수있는 전용 : true'를 추가합니다.) –

답변

0

, 자바 1.7.0_11, 자체 서명 인증서로 서명 된 애플릿 항아리는 신뢰할 수있는 인증서 목록에 추가됩니다. 내가 내 애플릿의 codebase 모든 권한을 부여한 내 정책 파일의 섹션을 제거했을 때 멀리 갔다.

0

연관/개인 키를 만든 후 인증서를 작성하고 인증서로 애플릿 중 하나에 인증서를 서명하려면 JAR의 각 파일에 대한 해시를 만들어 개인 키로 서명해야합니다. 이 해시, 공개 키 및 인증서는 JAR의 매니페스트와 함께 JAR 파일의 META-INF 디렉토리에 추가되어야합니다.

$ jar -tf SignedApplet.jar 

어쩌면 당신은, 당신은 조사 할 필요가 (이이 항목에 대한 내 생각 엔 다음과 같은 권한 부여를 포함하는 정책 파일을 생성 할 필요가 link