2010-09-20 61 views
3

有沒有什麼辦法可以防止從命令行運行Java應用程序時出現「應用程序的數字簽名無法驗證」警告消息?當我從命令行啓動Java應用程序時,能否防止數字簽名警告?

我正在尋找一個命令行解決方案,它允許在持續集成服務器上啓動這樣的應用程序,所以我需要一個不需要手動干預的解決方案。

此外,我不希望禁用任何應用程序的此警告,因爲這可能存在安全風險。

不確定是否有幫助,但我確實知道簽名的「名稱」,「發佈者」和「來自」字段的值。

screenshot of java digital signature warning

只是可以肯定,我不要求有關如何註冊該應用程序。

更新1

我認爲,解決辦法是使用keytool通過命令行導入證書,但由於某種原因,它無法正確導入它,因爲它並不在此之後出現在控制面板小程序和該應用程序仍然需要它。

keytool -importcert -file my.cer -alias alf2 -storepass changeme -noprompt

有什麼事情關係到默認keystore,我怎麼能保證我將其導入到正確的密鑰庫?

更新2

很多對我取得了一些進展網研究後,至少曾在Windows 7Java 6keytool -importcert -file my.cer -keystore "%USERPROFILE%\AppData\LocalLow\Sun\Java\Deployment\security\trusted.certs" -storepass "" -noprompt -v

我看來,Sun公司未能在文件中指定的真實位置默認密鑰庫和默認密碼爲空的事實。

但這不是結束,因爲當它在自動化用戶帳戶上運行失敗時,它失敗,因爲此用戶還沒有密鑰存儲區,並且因爲命令行工具keytool無法創建密鑰存儲庫空密碼,請求至少6個字符。 see Sun's forum tread...

+0

經過一番挖掘,我發現顯示在Java控制面板中的證書存儲在'C:\ Users \ username \ AppData \ LocalLow \ Sun \ Java \ Deployment \ security \ trusted.certs'中。現在的問題是,如何使用'keytool'寫入'keystore'(該位置可能與其他機器不同,這是在Windows 7上)。 – sorin 2010-09-20 15:11:39

+0

使用什麼命令運行這個「應用程序」?術語java應用程序通常用於Java應用程序,其中您有一個帶有main方法的類,並且它們不需要Java沙箱處於活動狀態(因爲從命令行運行的東西意味着您信任該代碼)。 – 2010-09-20 15:41:27

+0

應用程序運行'javaw'執行,因爲它可以在兩種模式下運行console或gui模式。 – sorin 2010-09-20 16:29:53

回答

1

有兩種方法:

  • 獲取軟件的供應商以適當的簽名重新發布。 「更多信息」鏈接應告訴你爲什麼簽名無法驗證,但最可能的原因是簽名是使用自簽名CA證書或自過期的證書創建的。 (如果供應商沒有幫助,則可以使用您自己的證書來退出JAR文件。)

  • 將相關簽名證書作爲「可信證書」添加到JVM的證書存儲區。不幸的是,您需要爲每個需要運行應用程序的機器上的每個JVM執行此操作。

+0

因此,在這種情況下,我怎麼能** **證書導入自動化? – sorin 2010-09-20 11:24:11

+1

您可以編寫一個使用'keytool'導入證書的shell腳本/批處理文件。見http://download.oracle.com/javase/6/docs/technotes/tools/solaris/keytool.html – 2010-09-20 11:44:08

1

如果未經用戶許可,允許未經簽名的應用程序運行,這將是對用戶安全/隱私的嚴重危害。

答案是'NO',除非您獲得應用程序簽名或用戶手動將發佈者添加到'可信'列表中。

更多here

+0

@Sorin - 只是好奇你不喜歡這個答案。 – 2010-09-20 12:45:58

+0

@Sorin-你在尋找答案還是'知名'答案? – 2010-09-20 13:34:03

+0

正如您可能注意到的那樣,在沒有用戶干預/自動化的情況下執行某些操作。這對於應該無人看管的機器來說至關重要。 – sorin 2010-09-20 14:19:03

-1

我想你應該創建文件例如mypolicy.policy在java.home/lib/securit y授予所有權限以代碼簽名並將此文件添加到java.security(例如。在java.policy路徑下)這個警告窗口永遠不會再提示

+1

-1:OP顯然使用Windows; * nix系統的答案不會有幫助。 – 2011-11-21 12:47:12

0

不知道它是否實際上仍然是Windows XP的keytool要求輸入密碼,如果證書商店實際上不存在,所以你應該手動創建或複製商店從導入證書之前的某處開始。用戶商店沒有密碼。

相關問題