2013-04-11 8 views
17

Wir erstellen eine digitale Signatur (PKCS7) mithilfe der Java-Sicherheits-API. Der Digest-Algorithmus ist SHA-256 und der Verschlüsselungsalgorithmus ist RSA (SHA256withRSA).WAS 6.1 IBMJCE-Provider generiert falsche sha256witrsa-Signatur

Mithilfe des SunRsaSign-Anbieters auf dem lokalen Computer wurde bei einigen Inhalten eine Signatur generiert. Mit dem IBMJCE-Provider in WAS 8.0.0.2 konnten wir dieselbe Signatur für denselben Inhalt generieren.

Das Problem ist jedoch, wir mussten zurück zu WAS 6.1 migrieren. Jetzt ist die erzeugte Signatur anders als die in den obigen 2 Fällen erzeugte Signatur. Ich habe die in allen 3 Fällen erstellten Nachrichten-Digests überprüft, und zwar in allen 3 Fällen, aber im Fall von WAS 6.1 ist die Signatur anders.

Gibt es ein bekanntes Problem mit IBMJCE-Provider von WAS 6.1 in Bezug auf SHA256withRSA-Verschlüsselung? Alle Hinweise würden sehr geschätzt werden. Danke

+3

+1 für die Überprüfung der Aufschlüsse waren identisch. –

+0

Haben Sie das gesamte CMS-Format oder nur das PKCS # 1-Format überprüft? Wofür haben Sie den Hash generiert? –

+0

Ich überprüfte das gesamte CMS-Format (PKCS # 7). Nur die letzten 4 Zeilen unterschieden sich. Ich verstehe, dass der Teil, der sich in der Signatur unterscheidet, der verschlüsselte Digest ist, der nach dem SIGNING_TIME kommt. (Ich habe dasselbe Datum/dieselbe Uhrzeit wie SIGNING_TIME_OID verwendet). –

Antwort

1

Gibt es wirklich ein Problem? Soweit ich weiß, muss dies gelten

signature = sign(message) 
verify(signature) == message 

Es ist nicht erforderlich, dass alle Signaturen übereinstimmen müssen. Hast du wirklich Probleme mit der Verifizierung dieser Signaturen?

0

Wir hatten das gleiche Problem und wir zwangen Webspshere SUNJCE zu verwenden. Hier sind die Schritte.

So In IBM Websphere Konsole gehen zu Anwendungsserver> Server> Prozessdefinition> Java Virtual Machine

Look for Generic JVM Argumente und die folgenden hinzuzufügen.

-DamCryptoDescriptor.provider=SunJCE -DamKeyGenDescriptor.provider=SunJCE 

kopiert Dann

C:\JAVA\jdk1.6.0_34\jre\lib\ext\sunjce_provider.jar 

Um

C:\Program Files\IBM\SDP\runtimes\base_v7\java\jre\lib\ext\sunjce_provider.jar 

ändern

C:\Program Files\IBM\SDP\runtimes\base_v7\java\jre\lib\security\java.security 

die folgenden Sun-Anbieter in die Liste der Anbieter in der Datei java.security Durch das Hinzufügen.

#This will help Websphere to load 
security.provider.13=com.sun.crypto.provider.SunJCE 
security.provider.14=sun.security.provider.Sun 
security.provider.15=sun.security.rsa.SunRsaSign 
security.provider.16=sun.security.jgss.SunProvider 

Hoffe, das hilft.