Kryptographie: Warum bekomme ich unterschiedliche RSA-Signaturen, je nachdem, aus welchem ​​Zertifikatspeicher das Zertifikat geladen wurde?

9

Ich habe einen funktionierenden Code, der eine korrekte Signatur eines Strings erzeugt, wenn ich ein Zertifikat aus einer Datei oder aus dem Speicher des aktuellen Benutzers lade. Wenn ich jedoch das exakt gleiche Zertifikat (derselbe .p12 und derselbe Fingerabdruck) vom Computer-Zertifikatspeicher laden, verhält es sich anders. Wenn sie von diesem Speicher geladen werden, sind die von meinem C # -Code erzeugten Signaturen die halbe Länge (1024 Bits anstelle von 2048) und sind inkorrekt. Der private Schlüssel scheint in beiden Fällen ordnungsgemäß geladen zu werden.

Warum macht das, von dem das Zertifikat geladen wird, einen Unterschied bezüglich der Signatur? Und warum sollte die Signatur die Hälfte der Länge sein?

Geladen von CurrentUser:

%Vor%

(richtig)

Von LocalMachine geladen:

%Vor%

(falsch - und notieren Sie die 1024-Bit-Schlüsselgröße und Signaturlänge)

Hier ist die C #, die ich verwende:

%Vor%     
NickG 27.01.2017, 11:01
quelle

1 Antwort

2

Es stellte sich heraus, dass es etwas mit dem Dateiformat des Zertifikats zu tun hatte, das ich mit OpenSSL erstellt hatte, und dass der Kryptoanbieter nicht eingestellt war. Der kritische Befehl ist Nummer 5 unten:

Hier sind die Befehle, die ich verwendet habe, um das Arbeitszertifikat zu erstellen:

  1. Erzeuge ein Schlüsselpaar:

openssl genrsa -out private_key.pem 2048

  1. Extrahieren Sie den öffentlichen Schlüssel:

openssl rsa -pubout -in private_key.pem -out public_key.pem

  1. Erstellen Sie eine CSR-Zertifikatsignierungsanforderung aus dem privaten Schlüssel:

openssl req -new -key private_key.pem -out csr.csr

  1. Erstellen Sie ein selbstsigniertes Zertifikat:

openssl x509 -req -days 1095 -in csr.csr -signkey private_key.pem -out certificate.crt

  1. Erstellen Sie ein PFX-Format-Zertifikat mit dem angegebenen CSP:

openssl pkcs12 -export -in certificate.crt -inkey private_key.pem -CSP "Microsoft Enhanced RSA and AES Cryptographic Provider" -out TEST_pfx.pfx

    
NickG 30.01.2017, 14:06
quelle