2014-01-08 50 views
3

我有一個用於簽名和加密文件的小程序。更新Java來7u45後,我的小應用程序接收警告消息說: 「這個應用程序將在未來的Java安全更新來阻止,因爲JAR文件清單中不包含的權限屬性JAR文件清單不包含權限屬性

然後添加以下屬性:

Permissions: all-permissions 
Application-Library-Allowable-Codebase: * 
Application-Name: Signature-Chiffrement 
Caller-Allowable-Codebase: * 
Codebase: * 

到主罐和所有jar依賴關係,在那之後我重新簽署的所有罐子。

但是並沒有消失警告信息,因爲「bcprov-EXT-jdk16-140.jar」不是這裏的可信簽名者簽名是例外:

java.security.NoSuchProviderException: JCE cannot authenticate the provider BC .... 
Caused by: java.util.jar.JarException: bcprov-ext-jdk16-140.jar is not signed by a trusted signe… 

顯然,「bcprov- ext-jdk16-140.jar「由充氣城堡簽署。 我試圖使用另一個充氣城堡jar,但不幸的是所有這個jar不包含權限屬性。

  • 有沒有一種方法來允許屬性添加到 「bcprov-EXT-jdk16-140.jar」,這是之前充氣城堡簽署? 或者獲得具有所需清單屬性的新的bcprov-ext JAR?
  • 是否有可能在一個地方添加權限屬性,如我們的 主jar依賴於其他jar?

在此先感謝您的幫助

+0

我有與mssql驅動程序相同的問題採取[看看](http://stackoverflow.com/questions/20431623/java-web-start-manifest-issue)我的解決方法 – nachokk

回答

2

爲了執行一個Bouncy城​​堡的罐子,其中包含一個加密的供應商作爲一個小程序,我們需要簽署這個罐子兩次。

首先簽名(加密提供商)必須與Oracle發佈的特定證書做(http://www.oracle.com/technetwork/java/javase/tech/getcodesigningcertificate-361306.html

第二個簽名是Java插件的安全運行要求,並可以由任何CA頒發的證書來做到這一點認識供應商(如verisign等)。

bouncy castle bcprov-ext-jdk16-140.jar由oracle jce代碼簽名證書籤名,但是當我們改變manifest以添加一些參數時,我們打破了這個簽名。 爲了避免這種異常,我們需要使用JCE代碼簽名來簽署jar。

1

我有最近這個問題。我的解決方案(也許不是最好的,我接受建議)是:

  • 再次刪除一切,除了在我所有的小程序罐子的META-INF目錄,裏面的MANIFEST.MF甚至第三方的人
  • 註冊我的罐子使用簡單的Ant腳本

http://ant.apache.org/manual/Tasks/signjar.html

難道讓它爲你我們的企業證書?

+0

感謝您的迴應我刪除所有META-INF目錄中的文件需要MANIFEST.INF,然後我用我們的證書辭去了所有JAR文件。不幸的是,錯誤只存在於有彈性的城堡jar«bcprov-ext-jdk16-140.jar»這裏是一個例外:java.security.NoSuchProviderException:JCE無法認證提供程序BC ....由...引起:bcprov-ext-jdk16- 140.jar未由可信簽名人簽名。 – Khalilos

+0

你已經用一些證書再次簽名了。該證書是由運行代碼的機器信任的嗎? –

+0

請問什麼意思是「您運行代碼的機器所信任的證書」? 事實上,我沒有源代碼,我只有jar文件。要修改manfiest目錄我使用winrar程序,然後我們通過我們的「6NRJ」證書對jar進行簽名。感謝您的幫助 – Khalilos

相關問題