2013-01-13 39 views
2

Java jar可以使用JDK jarsigner工具簽名。這與policytool相結合,似乎只允許您在運行時向jar添加權限。我想要一個默認的「撤銷訪問權限」。是否有可能讓java以白名單的方式進行白名單的操作,只允許一定數量的證書籤名的jar文件運行?限制java只執行簽名罐子?

+1

安裝自己的安全管理器。 –

+1

在瀏覽器中或使用java命令啓動它的應用程序中? – bmargulies

+0

@bmargulies偉大的問題。請參閱[由@TomHawtin回答](http://stackoverflow.com/a/14309129/418556)對此進行擴展。 –

回答

3

據我所知,這是在你的計算機上,你可以控制。使用

java -Djava.security.manager YourApplication 

當啓動應用程序。這將安裝可通過policy files進行配置的默認安全管理器。策略文件允許沿線

grant signedBy "me" { 
     permission java.io.FilePermission "/home/me/*", "read,write"; 
    }; 

各種可能的權限之間配置每個簽名人或者每個代碼庫的權限,我目前還沒有看到一個權限「跑在所有」,但似乎可以完全禁用這兩個網絡和文件系統訪問。

如果您有可能運行作爲決策者的自己的外部應用程序(啓動或不啓動),則可以驗證代碼中的簽名爲already discussed

此外,你可以寫與周圍的-verify開關的jarsigner的包裝,如記錄here

jarsigner -verify -keystore mystore hackerApplication.jar 

,並捕獲「SMK」的輸出,使用一些bash類似的包裝。

+0

這也是我的結論。我正在尋找可能能夠執行此操作的外部應用程序。理想情況下,對於Windows。 – 0xdabbad00

+0

我已編輯答案,爲此提供解決方案。 – h22

1

對於自7u10起的Oracle JRE上的Java PlugIn和WebStart,Java控制面板中存在相關的自定義安全設置。在「對安全JRE版本的不可信應用程序採取行動」下,選擇「不要運行」。請參閱Setting the Security Level of the Java Client

+0

我不僅要限制未簽名的java代碼,還要限制所有未使用公司證書籤名的java代碼。 – 0xdabbad00