有沒有什麼辦法可以防止從命令行運行Java應用程序時出現「應用程序的數字簽名無法驗證」警告消息?當我從命令行啓動Java應用程序時,能否防止數字簽名警告?
我正在尋找一個命令行解決方案,它允許在持續集成服務器上啓動這樣的應用程序,所以我需要一個不需要手動干預的解決方案。
此外,我不希望禁用任何應用程序的此警告,因爲這可能存在安全風險。
不確定是否有幫助,但我確實知道簽名的「名稱」,「發佈者」和「來自」字段的值。
只是可以肯定,我不要求有關如何註冊該應用程序。
更新1
我認爲,解決辦法是使用keytool
通過命令行導入證書,但由於某種原因,它無法正確導入它,因爲它並不在此之後出現在控制面板小程序和該應用程序仍然需要它。
keytool -importcert -file my.cer -alias alf2 -storepass changeme -noprompt
有什麼事情關係到默認keystore
,我怎麼能保證我將其導入到正確的密鑰庫?
更新2
很多對我取得了一些進展網研究後,至少曾在Windows 7
與Java 6
:keytool -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...
經過一番挖掘,我發現顯示在Java控制面板中的證書存儲在'C:\ Users \ username \ AppData \ LocalLow \ Sun \ Java \ Deployment \ security \ trusted.certs'中。現在的問題是,如何使用'keytool'寫入'keystore'(該位置可能與其他機器不同,這是在Windows 7上)。 – sorin 2010-09-20 15:11:39
使用什麼命令運行這個「應用程序」?術語java應用程序通常用於Java應用程序,其中您有一個帶有main方法的類,並且它們不需要Java沙箱處於活動狀態(因爲從命令行運行的東西意味着您信任該代碼)。 – 2010-09-20 15:41:27
應用程序運行'javaw'執行,因爲它可以在兩種模式下運行console或gui模式。 – sorin 2010-09-20 16:29:53