簡體   English   中英

為什么Java Web Start說簽名的jar文件是未簽名的?

[英]Why does Java Web Start say a signed jar file is unsigned?

Java Web Start(JWS)說它無法啟動我的應用程序,因為jar文件是無符號的:

Error: Unsigned application requesting unrestricted access to system
       Unsigned resource: .../dynaccn.jar

但jar文件簽名:

$ jarsigner -keystore ... dynaccn.jar idv
$ jar tf dynaccn.jar
META-INF/MANIFEST.MF
META-INF/IDV.SF
META-INF/IDV.RSA
META-INF/
edu/
edu/ucar/
edu/ucar/unidata/
edu/ucar/unidata/dynaccn/
App$1.class
...
$ jarsigner -verbose -certs -verify dynaccn.jar
       28325 Tue Aug 17 09:41:58 MDT 2010 META-INF/MANIFEST.MF
       28404 Tue Aug 17 09:41:58 MDT 2010 META-INF/IDV.SF
        2880 Tue Aug 17 09:41:58 MDT 2010 META-INF/IDV.RSA
           0 Tue Aug 17 09:41:58 MDT 2010 META-INF/
           0 Mon Aug 16 10:10:34 MDT 2010 edu/
           0 Mon Aug 16 10:10:34 MDT 2010 edu/ucar/
           0 Mon Aug 16 10:10:34 MDT 2010 edu/ucar/unidata/
           0 Mon Aug 16 10:10:34 MDT 2010 edu/ucar/unidata/dynaccn/
...
sm       486 Mon Aug 16 10:10:34 MDT 2010 App$1.class

      X.509, CN=University Corporation for Atmospheric Research, OU=UNIDATA, O=University Corporation for Atmospheric Research, L=Boulder, ST=Colorado, C=US
      [certificate will expire on 2/6/11 4:59 PM]
      X.509, CN=Thawte Code Signing CA, O=Thawte Consulting (Pty) Ltd., C=ZA
      [certificate is valid from 8/5/03 6:00 PM to 8/5/13 5:59 PM]
      [KeyUsage extension does not support code signing]
      X.509, EMAILADDRESS=premium-server@thawte.com, CN=Thawte Premium Server CA, OU=Certification Services Division, O=Thawte Consulting cc, L=Cape Town, ST=Western Cape, C=ZA
      [certificate is valid from 7/31/96 6:00 PM to 12/31/20 4:59 PM]
      [CertPath not validated: null]
...
jar verified.

Warning: 
This jar contains entries whose signer certificate's KeyUsage extension doesn't allow code signing.
This jar contains entries whose signer certificate will expire within six months. 
This jar contains entries whose certificate chain is not validated.
This jar contains signed entries that's not signed by alias in this keystore.

JWS和我的瀏覽器都有“Thawte Premium Server CA”證書。

即使JWS緩存和瀏覽器下載區域為空,也會出現此問題。

我不相信“KeyUsage”消息是相關的,因為1)相同的證書鏈用於另一個成功啟動的應用程序; 2)我讀過的文檔表明Thawte Code Signing CA僅用於驗證UNIDATA證書而不用於簽署代碼。

我的環境是Linux 2.6.27.41-170.2.117.fc10.x86_64,Firefox 3.6.8(i686)和Java 1.7.0-ea。

為什么這個應用程序不會啟動?

更新:我發現如果JNLP文件中的“codebase”屬性引用本地目錄,則啟動應用程序,但如果它引用了位於用戶身份驗證之后的URL,則不會啟動。 在后一種情況下,如果從命令行調用,javaws(1)將認證網頁解釋為JNLP文件(具有明顯的結果)。 如果來自用戶身份驗證網頁的“deployJava”腳本調用(以便瀏覽器具有會話cookie),則javaws(1)表示該應用程序未簽名。 我發現這兩種失敗模式都很奇怪,因為javaws(1)文檔說它理解用戶驗證網頁並且jar文件已簽名。

我在Gentoo Linux上運行OpenJDK 7,我認為我遇到了同樣的問題。

我無法使用它與OpenJDK 7一起使用。只有使用Sun Java 6 JDK版本重新簽名才能正確簽署應用程序。 (我也重新構建了它,因為它是由ant管理的,但我不知道是否有必要)。

僅僅切換到官方JDK 6而不進行重建只會使用“jarsigner -verify -verbose -certs”進行變換時“[CertPath not validated:null]”警告消失,但在我最終使用的應用程序中似乎不起作用。

  1. 確保你沒有使用jar的緩存(unsigned)版本。 清理JWS下載jar的臨時文件夾
  2. 確保您的jar的所有依賴項(jar)需要特殊權限,也會被簽名

確保使用doPrivileged塊將調用包裝在applet中。 我不確定為什么它會像這樣工作,但似乎像一個魅力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM