2012-01-16 22 views
13

Sto recuperando il seguente errore nel file di registro.Le informazioni sul firmatario non corrispondono

(java.lang.SecurityException: classe "com.adventnet.snmp.snmp2.SecurityModelTable" 's informazioni firmatario non corrisponde informazioni firmatario di altre classi nello stesso package gettato

il fatto è che quando si esegue il comando di seguito, si dice vaso verificato.

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

Se il file jar è verificata allora come si può verificare questo problema?

risposta

12

Significa che si hanno due o più classi nello stesso pacchetto con dati di firma diversi. Di solito ciò significa che le classi provengono da diversi JAR, uno dei quali è firmato e l'altro non è firmato.

+0

Ma come si può verificare questo vaso? Non dovrebbe fallire la verifica? – mibzer

+1

@mibzer: No, questo è un diverso tipo di verifica. Jarsigner verifica solo quel particolare JAR. Il runtime Java funziona con molti JAR e verifica se sono compatibili. Se consentiva il codice da un'origine diversa nello stesso pacchetto di un JAR firmato, indebolirebbe le garanzie di sicurezza implicite nella firma. –

+0

Quindi vuoi dire che alcuni altri file jar contengono la stessa classe, facendo un po 'di lavoro ma diversi dati delle firme. E questo causa un problema di sicurezza ed eccezione lanciata giusto? – mibzer

15

albero di dipendenza pom per stessi pacchetti di diverse versioni.

Ho riscontrato questo problema con itext-2.1.7 incluso il precedente bouncycastle's bcpkix incluso in seguito version altrove.

Utilizzare questa pattern:

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

<dependency> 
    latest package Y 
</dependency> 

Update: Per controllare i dettagli dell'albero delle dipendenze di package_Y è possibile utilizzare mvn dependency:tree -Dverbose -Dincludes=package_Y. Per maggiori informazioni, controllare maven documentation sulla risoluzione dei problemi relativi alle dipendenze. Anche l'Eclipse ha un buon visualizzatore dell'albero delle dipendenze.

1

Ho riscontrato questa eccezione durante l'esecuzione di un progetto Scala/Spark in Eclipse (Mars) su Windows e mi ha impedito di eseguire il debug e di eseguire il progetto nell'IDE. Il progetto ha usato un file Maven pom.xml. C'è voluto un po 'per risolvere, in modo da sto distacco la procedura dettagliata qui per aiutare gli altri:

  1. Vai alla cartella in cui il file pom.xml progetto è
  2. Eseguire il comando: la dipendenza mvn: albero -Dverbose > Depends.Txt Assicurati di non avere un Depends.Txt altrimenti verrà sovrascritto!
  3. Cerca nel file Depends.Txt per la classe unsigned di cui si lamenta l'IDE Eclipse. Nel mio caso, era javax.servlet.
  4. Si può trovare in una sezione che assomiglia a questo:

    + - org.apache.hadoop: Hadoop MapReduce-client-core: jar: 2.6.0: fornita

    + - javax .servlet: servlet-api: vaso: 2.5: a condizione

  5. l'ID gruppo di Maven che si desidera escludere la classe duplicato in quanto sopra è: Hadoop MapReduce-client-core

  6. Aggiungi un esclusioni sezione che elenca il groupid dell'esclusione nel pom.xml a poppa er il pacchetto offendente. Nel mio caso, questo era il groupid javax.servlet.

  7. Nota che non è possibile risolvere questo problema riordinando il percorso di generazione Java come alcuni hanno pubblicato per un problema simile.

0

java.lang.SecurityException: classe “org.bouncycastle.asn1.ASN1ObjectIdentifier” 's informazioni firmatario non corrispondono informazioni firmatario di altre classi nello stesso package

Ans: Sono stato anche affrontando lo stesso eccezione quando stavo cercando di rendere PDF protetto da password.

Ho aggiunto sotto i barattoli per risolvere lo stesso.

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

0

Nel mio programma, ho caricato due versioni degli stessi pacchetti. Uno è boprov-jdk15-140.jar, l'altro è bcprov-jdk15-151.jar. I due sono in conflitto.

Nel file MANIFEST.MF del pacchetto JAR, si ha la seguente digest:

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

Il file JAR due ha diverse informazioni SHA1-Digest.

0

Nel mio caso ho avuto:

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 

Era un progetto con un sacco di dipendenze e la dipendenza mvn: informazioni albero non mi ha aiutato.

Ecco come ho risolto il mio problema:

  • Ho fatto una ricerca "Cerca nei file" utilizzando il Blocco note ++ su tutto il M2_REPO
  • ho trovato un progetto che ha ridefinito "stringhe" di classe in un pacchetto esattamente identico a "org.bouncycastle.util.Strings" che dovrebbe provenire dalla dipendenza "org.bouncycastle: bcprov-jdk15on".
  • Una volta trovato, ho spostato tutte queste classi problematiche in un nuovo pacchetto e aggiornato questa versione del progetto.
  • Infine ho aggiornato il comando del progetto che mi ha causato problemi in primo luogo per utilizzare la mia dipendenza che utilizza il nuovo nome del pacchetto.

Problema risolto.

Problemi correlati