[英]Signing Java desktop application
我使用Swing(myProg.jar)創建了一個Java桌面應用程序。 我目前將我的應用程序打包為我的Mac用戶的.app,我使用InnoSetup為我的Windows用戶制作一個setup.exe文件。 我還提供了一個myProg.exe包裝器來啟動myProg.jar。
現在,為了擺脫我的用戶計算機上的SmartScreen和其他保護措施,我認為我需要簽署我的應用程序。 但是我讀的越多,它對我來說就越混亂。
任何人都可以為我澄清以下幾點嗎?
1)我需要什么樣的證書? 無論如何要讓它免費或至少便宜嗎?
2)我需要准確簽署什么? 我應該簽署myProg.jar文件,.app文件嗎? setup.exe? myProg.exe包裝器? 他們都是?
3)已解決 -當我更新程序並用myProg.jar的新版本替換myProg.jar時,它將如何工作?
非常感謝!
您的JDK應該包含一個名為jarsigner
工具。 此工具允許您免費簽署jar文件。
1)用於簽名的密鑰需要在java密鑰庫中(默認.keystore
)您可以從.der
格式將密鑰導入密鑰庫。
2)您只能簽署.jar
文件
3)它將用新簽名的文件覆蓋舊文件。 就像簡單的副本一樣。 除非您的安裝人員這樣做,否則不會執行簽名驗證。
此外,並非每個簽名都相同。 例如,如果您嘗試注冊加密提供程序,則必須在Oracle JVM上運行Oracle簽名的簽名。 請參閱: https : //docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/HowToImplAProvider.html#Step6
例:
要生成密鑰:
keytool -genkey -keyalg RSA -alias key_alias -keystore mystore.keystore -keysize 2048
簽名jar:
jarsigner -keystore mystore.keystore -tsa http://tsa.safecreative.org MyJARFile.jar key_alias_from_keystore
要驗證簽名:
jarsigner -verify jar-file
我不確定這會解決我們的問題。 總的來說,你需要做的是sign os可執行文件。 在這種情況下.exe
和.app
一種可能的解決方案是簽署app包裝器的可執行文件(如果是windows .exe
)。 為此,請參閱: https : //msdn.microsoft.com/en-us/library/aa387764.aspx
在您使用基於Unix的系統時,我會嘗試運行Mono的簽名工具。 在“signcode”上看單聲道文檔(我無法提供鏈接,沒有足夠的代表)
這應該擺脫“Unknown Publisher”消息,但除非您可以讓OS開發人員簽署您的證書,否則將向用戶顯示一些消息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.