2012-01-16 129 views
13

我在日誌文件上收到以下錯誤。簽名者信息不匹配

(java.lang.SecurityException異常:類 「com.adventnet.snmp.snmp2.SecurityModelTable」 的簽名者信息 不會在同一 包拋出匹配其他類的簽名者信息

的事情是,當我運行下面的命令,它說罐子驗證。

/usr/jdk/instances/jdk1.5.0/bin/jarsigner -verify -verbose Jarfile.jar 

如果jar文件進行驗證,然後如何這個問題發生?

回答

12

這意味着您有兩個或更多的類在同一個包中具有不同的簽名數據。通常這意味着這些類來自不同的JAR,其中一個是簽名的,另一個是未簽名的。

+0

但是如何驗證這個罐子呢?不應該驗證失敗? – mibzer 2012-01-16 09:43:26

+1

@ mibzer:不,這是一種不同的驗證。 Jarsigner只驗證特定的JAR。 Java運行時與許多JAR一起工作並檢查它們是否兼容。如果它允許來自同一包中不同源的代碼作爲已簽名的JAR,則會削弱簽名隱含的安全保證。 – 2012-01-16 10:06:06

+0

所以你的意思是,我的一些其他jar文件包含相同的類,做一些工作,但簽名數據不同。這導致安全問題和異常拋出是正確的? – mibzer 2012-01-16 10:12:35

15

檢查pom依賴關係樹不同版本的相同軟件包

我有這個問題itext-2.1.7包括舊的bouncycastle's bcpkix,其中包括在其他地方後面的version

使用此pattern

<dependency> 
    package X 
    <exclusions> 
    <exclusion> 
     old package Y 
    </exclusion> 
    </exclusions> 
</dependency> 

<dependency> 
    latest package Y 
</dependency> 

更新:要檢查package_Y的依賴關係樹的細節,你可以使用mvn dependency:tree -Dverbose -Dincludes=package_Y。有關解決依賴關係樹問題的更多信息,請參閱maven documentation。此外,Eclipse具有相當不錯的依賴關係樹查看器。

1

我在Windows上運行Eclipse(Mars)中的Scala/Spark項目時遇到了此異常,並且阻止了我在IDE中調試和運行項目。該項目使用了Maven pom.xml文件。過了一段時間來解決,所以我在這裏張貼的詳細步驟,幫助他人:

  1. 轉至項目pom.xml文件是
  2. 運行該命令的文件夾:MVN依賴性:樹-Dverbose > Depends.Txt 請確保您沒有Depends.Txt,否則它會被覆蓋!
  3. 在Depends.Txt文件中搜索Eclipse IDE抱怨的未簽名類。在我的情況下,它是javax.servlet。
  4. 你會發現它看起來像這樣的一段:

    + - org.apache.hadoop:Hadoop的MapReduce的客戶端核心中:jar:2.6.0:提供

    + - 的javax .servlet:servlet的API中:jar:2.5:提供

  5. 要在上面的排除重複類Maven的組ID是:Hadoop的MapReduce的客戶端核心

  6. 添加排除部分列出排除在pom.xml尾部的groupid呃違規包裹。在我的情況下,這是groupid javax.servlet。

  7. 請注意,您不能通過重新排序Java構建路徑來解決此問題,因爲有些人已針對類似問題發佈了Java構建路徑。

0

java.lang.SecurityException異常:類「org.bouncycastle.asn1.ASN1ObjectIdentifier」的簽名信息並不在同一個包

答匹配其他類的簽名者信息:我也面臨着同樣的例外,當我試圖使PDF密碼保護。

我在罐子下面添加了解決方案。

◾itextpdf-5.2.1.jar ◾bcmail-jdk16-1.46.jar ◾bcprov-jdk16-1.46.jar ◾bctsp-jdk16-1.46.jar

0

在我的計劃,我已經裝兩個版本的相同包。一個是boprov-jdk15-140.jar,另一個是bcprov-jdk15-151.jar。這兩個是衝突的。

在JAR包的MANIFEST.MF文件,它具有以下摘要:

Name: org/bouncycastle/crypto/digests/SM3Digest.class 
SHA1-Digest: xxxxxxxx 

兩個JAR文件有不同的SHA1-摘要信息。

0

在我來說,我有:

Caused by: java.lang.SecurityException: class "org.bouncycastle.util.Strings"'s signer information does not match signer information of other classes in the same package 

這是一個很大的依賴性和MVN依賴關係的項目:樹信息並沒有真的幫了我。

這是我如何解決我的問題:

  • 我做了搜索「在文件中查找」使用記事本++的所有M2_REPO
  • 我發現了一個包重新定義「字符串」類完全是一個項目與「org.bouncycastle.util.Strings」相同,應該來源於「org.bouncycastle:bcprov-jdk15on」依賴。
  • 找到後,我將所有這些有問題的類都移到了一個新包中,並更新了這個項目版本。
  • 最後我更新了引起麻煩的項目,首先使用我的依賴,使用新的軟件包名稱。

問題已解決。

相關問題