0

ここに私の問題があります。バンドル署名に基づいて安全な OSGI (knopflerfish 5.0.0) 環境を作成しようとしています。Conditional Permission Admin サービスを使用し、ポリシー テーブルをポリシー ファイルで更新する管理バンドルがあります。バンドルの場所に基づいたアクセス許可ですべてが正常に機能します。「サンドボックス」フォルダーにあるすべてのバンドルには制限付きのアクセス許可があり、他のバンドルにはすべてのアクセス許可があります。しかし、場所に関係なく、特定の署名を持つバンドルにすべてのアクセス許可を付与したいと考えています。だからここに私のポリシーファイルがあります:

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 つの同一のバンドルを作成しました。1 つは署名されておらず、もう 1 つはこの識別名 (keytool で作成) で jarsigner によって署名されています。

X.509、CN=Martinelli Bastien、OU=テスト、O=オレンジ、L=メイラン、ST=RA、C=FR (キー)

しかし、System.exit() を呼び出そうとすると、2 つのバンドルがセキュリティ例外をスローします。

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 に答える