2014-04-25 9 views
0

그래서 여기 내 문제가있다 : 번들 서명을 기반으로 안전한 OSGI (knopflerfish 5.0.0) 환경을 만들려고한다. 조건부 권한 관리 서비스를 사용하고 정책 테이블로 정책 테이블을 업데이트하는 관리 번들이 있습니다. 번들 위치에 기반한 권한으로 모든 것이 잘 작동합니다.«sandbox»폴더에있는 모든 번들은 사용 권한이 제한되어 있고, 다른 번들에는 모든 권한이 있습니다. 그러나 나는 또한 그들의 위치에도 불구하고 특정 서명이있는 번들에 대한 모든 권한을 부여하려고합니다. 그래서 여기 내 정책 파일입니다BundleSignerCondition을 올바르게 사용하고 키를 관리하여 번들 서명을 기반으로 안전한 OSGI 환경을 만드는 방법은 무엇입니까?

ALLOW {[org.osgi.service.condpermadmin.BundleSignerCondition "*,o=Orange" ](java.security.AllPermission)} "all_signed" 

DENY {[org.osgi.service.condpermadmin.BundleLocationCondition "file:/home/martinelli/Bureau/workspace/sandbox/*"](java.lang.RuntimePermission "exitVM")}"sandbox" 

ALLOW { (java.security.AllPermission) }"all" 

그래서 이론적으로, 샌드 박스 폴더에있는 번들 모든 권한이 오렌지에 의해 서명 된 번들을 제외하고 System.exit와()를 사용할 수 없습니다. 2 개의 동일한 번들을 작성해, 서명 된 것은 아니고, 다른 1 개는 jarsigner에 의해 서명 된이 식별 명 (keytool로 작성된 것)을 작성했습니다 (keytool로 작성).

X.509, CN = Martinelli ST = RA, C = FR (키)

그러나 System.exit()을 호출 할 때 두 번들이 보안 예외를 throw합니다.

내 BundleSignerCondition에서 필터를 변경하려고 시도했습니다. 이제는 knopflerfish의 기본 키 저장소 또는 이와 유사한 구성에 관한 것입니다.

무엇이 잘못 되었습니까?

답변

0

문제가 해결되었습니다.

번들 서명 조건을 사용하면 이러한 속성을 구성 할 필요가있다 :

  • org.knopflerfish.framework.validator = JKSValidator을
  • org.knopflerfish.framework.validator.jks.ca_certs = "키 스토어 파일 경로 "
  • org.knopflerfish.framework.validator.jks.ca_certs_password ="암호 "

은 내가 props.xarg 파일에서 이러한 속성을 구성. 그러나이 파일은 knopflerfish 프레임 워크의 처음 시작에서만 사용됩니다. 사실 프레임 워크가 처음 시작될 때 fwdir이라는 폴더가 생성됩니다. 이 폴더에는 프레임 워크를 다시 시작하는 데 사용되는 데이터가 들어 있습니다.

  • 이러한 속성 (자바 -jar framework.jar -Forg.knopflerfish.framework.validator.jks.ca_certs = "키 스토어 파일과 프레임 워크를 실행

    그래서이 폴더가있는 경우 3 개 솔루션이 경로 "...)

  • 가 props.xargs 파일의 속성을 설정 FWDIR 폴더의 .xargs 파일의 속성을 설정하고 (init.xargs에서 다시 시작 강제로 FWDIR 폴더를 삭제 초기화).