所以这是我的问题:我正在尝试基于捆绑签名创建一个安全的 OSGI (knopflerfish 5.0.0) 环境。我有一个使用条件权限管理服务并使用策略文件更新策略表的管理包。基于捆绑包位置的权限一切正常:位于«沙箱»文件夹中的所有捆绑包都具有受限权限,其他捆绑包具有所有权限。但我也想授予具有特定签名的捆绑包的所有权限,不管它们的位置如何。所以这是我的政策文件:
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(),除了由 Orange 签名的具有所有权限的包。我创建了 2 个相同的包,一个未签名,另一个由 jarsigner 使用此专有名称(使用 keytool 创建)签名:
X.509, CN=Martinelli Bastien, OU=test, O=Orange, L=Meylan, ST=RA, C=FR (key)
但是当我尝试调用 System.exit() 时,这两个包会引发安全异常。
我试图更改我的 BundleSignerCondition 中的过滤器但没有效果。现在我认为这是关于 knopflerfish 中默认密钥库的配置或类似的东西。
你知道它有什么问题吗?