2016-05-12 16 views
0

Ich habe ein Problem beim Signieren von PDF-Dateien mit digitalem Signaturzertifikat von Smart Card Alle Signaturen haben Aussehen ohne Unicode wie die folgenden [! [Alle Signaturen] [1]] [1]Unicode-Problem Pdf beim Hinzufügen digitaler Signatur

und wenn ich wählen sie die Signatur ohne Unicode wie unten kommen zu enter image description here

und nach der Unterzeichnung des Dokuments es immer noch die gleiche,

enter image description here

bitte beachten Sie, dass der Name des Zertifikatsausstellers in arabischer Sprache ist, bitte, wie Sie es beheben können vielen Dank.

+0

Ihr erstes Bild verschwunden ist. – mkl

+0

Da die angezeigten Dialoge nicht mit iTextSharp zu tun haben, sondern Adobe Reader-Dialoge zu sein scheinen, haben Sie entweder ein Problem in Adobe Reader oder (was wahrscheinlicher ist) in Ihrem Zertifikat gefunden. Wenn Sie Ihr Zertifikat teilen (nur das öffentliche Zertifikat oder der private Schlüssel!), Können wir es untersuchen und feststellen, wo das Problem liegt. – mkl

Antwort

1

Das Problem liegt daran, wie der arabische Name im Zertifikat codiert ist.


In der betreffenden Bescheinigung wird der Name in der arabischen Schrift ist in der subjectAltName Erweiterung enthalten ist, und es codiert als TeletexString:

032F 75:   SEQUENCE { 
    <06 03> 
0331 3:   OBJECT IDENTIFIER subjectAltName (2 5 29 17) 
     :    (X.509 extension) 
    <04 6E> 
0336 6E:   OCTET STRING, encapsulates { 
    <30 6C> 
0338 6C:    SEQUENCE { 
    <A4 4A> 
033A 4A:    [4] { 
    <30 48> 
033C 48:     SEQUENCE { 
    <31 46> 
033E 46:     SET { 
    <30 44> 
0340 44:      SEQUENCE { 
    <06 03> 
0342 3:      OBJECT IDENTIFIER commonName (2 5 4 3) 
     :       (X.520 DN component) 
    <14 3D> 
0347 3D:      TeletexString 
     :     'Ù.Ø­Ù.د اÙ.بدراÙ.Ù. عبداÙ.عزÙ.ز اÙ' 
     :     '.بدراÙ.Ù.' 
     :      } 
     :      } 
     :     } 
     :     } 
    <81 1E> 
0386 1E:    [1] '[email protected]' 
     :    } 
     :    } 
     :   } 

(Da die OP der E-Mail-Adresse in seinen Screenshots geschwärzt, ich habe hier das gleiche.)

A TeletexString (= T61String) Typ in ASN.1

bezeichnet eine Arbitrary-Zeichenfolge mit T.61 Zeichen. T.61 ist eine Acht-Bit-Erweiterung des ASCII-Zeichensatzes. Spezielle "Escape" -Sequenzen spezifizieren die Interpretation nachfolgender Zeichenwerte wie zum Beispiel Japanisch; Die ursprüngliche Interpretation ist Latein. Der Zeichensatz enthält nicht druckbare Steuerzeichen. Der T61String-Typ erlaubt nur die lateinischen und japanischen Zeicheninterpretierungen, und die Vereinbarungen der Implementierer für Verzeichnisnamen schließen Steuerzeichen aus [NIST92]. Ein T61String-Wert kann eine beliebige Länge haben, einschließlich Null. Dieser Typ ist ein Zeichenfolgetyp.

(A Layman's Guide to a Subset of ASN.1, BER, and DER)

Während also T.61 ist allgemein arabische Schrift erlauben, seine Verwendung in der TeletexString (= T61String) -Typ in ASN.1 tut nicht.

(Sie können die genaue Definition der erlaubten Zeichen in ISO/IEC 8824-1 in Kombination mit the ISO International Register of Coded Character Sets to be used with Escape Sequences finden.)

Wie üblich, haben einige Anwendungen eine TeletexString Implementierung, die genau erweitern die angegebenen abdeckt und einige haben Implementierungen, die mehr umfasst , bis auf den ganzen T.61 Zeichensatz.

Adobe Reader insbesondere scheint unter den ehemaligen zu sein, zumindest deckt es nicht die arabische Schrift in Ihrem subjectAltName. Der Zertifikats-Viewer von Microsoft Windows gehört dagegen zu den Letzteren, insbesondere deckt er Ihre subjectAltName ab.

Das gesagt worden ist, ist die Verwendung von TeletexString in diesem Zusammenhang ohnehin fraglich, nach RFC 5280:

Implementierungen können mit TeletexString, BMPString oder UniversalString kodierte Zertifikate und CRLs mit Namen begegnen, aber Unterstützung für diese ist optional.

So können Sie tatsächlich glücklich sein, dass Ihr Zertifikat überhaupt akzeptiert wird als Adobe auch nicht gewählt haben könnte TeletexString überhaupt nicht mehr und lehnen Sie Ihr Zertifikat aus diesem Grund zu unterstützen ...


Um eine universellere Akzeptanz (durch RFC-kompatible Software) des arabischen Skripts in Ihrem subjectAltName zu erhalten, sollten Sie versuchen, Ihre Zertifizierungsstelle zu überreden, Ihr Zertifikat erneut auszugeben, aber UTF8String für arabisches Skript anstelle von TeletexString verwenden. Es kann jedoch auch einige kaputte Legacy-Anwendungen geben, die mit solch einem korrigierten Zertifikat ...

+0

Das war ausgezeichnete Antwort, danke mkl, ich werde versuchen, ein anderes Zertifikat zu reproduzieren und versuchen, zumindest wissen wir, dass ein Teil des Problems abhängig von der Zertifikatscodierung ist. –

Verwandte Themen