ここに私の問題があります。バンドル署名に基づいて安全な 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 のデフォルトのキーストアの設定などについてだと思います。
何が問題なのか分かりますか?