0

所以这是我的问题:我正在尝试基于捆绑签名创建一个安全的 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 中默认密钥库的配置或类似的东西。

你知道它有什么问题吗?

4

1 回答 1

0

问题解决了。

使用 Bundle Signature Condition 时,需要配置这些属性:

  • org.knopflerfish.framework.validator=JKSValidator
  • org.knopflerfish.framework.validator.jks.ca_certs=“密钥库文件路径”
  • org.knopflerfish.framework.validator.jks.ca_certs_password=“密码”

我在 props.xarg 文件中配置了这些属性。但是这个文件只在 knopflerfish 框架的第一次启动时使用。实际上,在第一次启动框架时,会创建一个名为 fwdir 的文件夹。此文件夹包含用于重新启动框架的数据。

因此,如果此文件夹存在,则有 3 个解决方案:

  • 使用这些属性运行框架(java -jar framework.jar -Forg.knopflerfish.framework.validator.jks.ca_certs="keystore file path" ...)

  • 在 fwdir 文件夹的 .xargs 文件中设置属性

  • 在 props.xargs 文件中设置属性并删除 fwdir 文件夹以强制从 init.xargs 重新启动(初始化)。

于 2014-04-30T09:43:25.963 回答