Java

Java 部署規則集.xml 不工作

  • March 14, 2014

最近對考勤卡系統的升級迫使我們將所有工作站升級到 Java 7u51(我們使用的是 6u45)。我們有另一個基於 Java 的應用程序,它對我們的業務至關重要,現在不斷發出安全警告。每個使用者每天必須至少點擊“執行”十次(供應商的程式碼未簽名,沒有發布者資訊)。這是無法接受的

據我所知,解決此問題的唯一方法是使用部署規則集。我在Google上搜尋了大量解釋如何做到這一點的文章。它們都有點不同,它們都不起作用。我創建了 XML 文件,Jar’ed,使用自簽名證書對其進行簽名,然後將該證書導入到幾台測試機器上的受信任 CA 中。無論我做什麼,在我訪問的每個啟用 Java 的站點(包括我特別列入白名單的站點)上都會看到以下錯誤:

“應用程序被部署規則集阻止”

無法驗證自簽名部署規則集 jar。

我對甲骨文近年來對 Java 的錯誤處理感到非常憤怒。我已經在這次部署中投入了 200 多個小時,因為我被一個接一個的障礙所束縛。使用者沮喪地打電話給服務台,不斷的安全警告正在花費組織的時間和金錢。

無論如何,足夠的咆哮。如果有人能告訴我我做錯了什麼,將不勝感激。

以下是我採取的具體步驟:

  1. 下載並安裝了 JDK 7u51(keytool.exe 和 jarsigner.exe 需要)

  2. 創建以下規則集.xml 文件:

<ruleset version="1.0+">
   <rule>
       <id location="*.ourdomain.com" />
       <action permission="run" />
   </rule>

   <rule>
       <id />
           <action permission="default" />
   </rule>
</ruleset>
  1. 使用以下命令打包 XML 文件:
jar.exe -cvf DeploymentRuleSet.jar ruleset.xml
  1. 使用 keytool.exe 命令創建了一個 50 年、2048 位 RSA 自簽名證書,如下所示:(我讓它提示輸入 DN 資訊;證書密碼與密鑰庫密碼相同)
keytool.exe -genkey -alias SelfSigned -keystore "SelfSigned.jks" -keyalg RSA -keysize 2048 -startdate "2000/01/01 00:00:00" -validity 18262

5)導出我剛剛使用以下命令製作的證書:

keytool.exe -export -file "SelfSigned.cer" -alias SelfSigned -keystore "SelfSigned.jks"
  1. 使用以下命令對我在步驟 3 中創建的 JAR 文件進行簽名:
jarsigner.exe -keystore "SelfSigned.jks" -signedjar "DeploymentRuleSet.jar" DeploymentRuleSet.jar SelfSigned
  1. 創建 C:\Windows\Sun\Java\Deployment 文件夾並將 DeploymentRuleSet.jar 文件複製到其中。我通過 Java 控制面板驗證正在應用規則集並且證書有效。

  2. 導入了我在步驟 5 中導出的證書。這是我偏離說明的地方。我無法使用 keytool.exe 導入證書。該頁面提示使用者trusted.certs store 沒有密碼,系統cacerts 密碼為“changeit”。兩者都不起作用,所以我使用 Java 控制面板的 GUI 將其導入到使用者的受信任證書儲存中。

如果在 Windows 上:我沒有將證書導入 Java 控制面板小程序中的使用者受信任證書儲存。我將它導入到 Windows 證書.mmc 電腦帳戶並將其儲存在受信任的根證書頒發機構下。我們正在使用 to 政策來做到這一點。

引用自:https://serverfault.com/questions/578026