그래서 여기 내 문제가있다 : 번들 서명을 기반으로 안전한 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의 기본 키 저장소 또는 이와 유사한 구성에 관한 것입니다.
무엇이 잘못 되었습니까?