Digitale Signaturen

Digitale Signaturen

Aspose.Words FOSS für .NET kann digitale Signaturen, die bereits an einem .docx Dokument durch den Aspose.Words.DigitalSignatures Namensraum prüfen. Diese Ausgabe behandelt Signatur verification — das Lesen von Signatur-Metadaten, die Überprüfung der Gültigkeit und das Untersuchen des Signaturzertifikats. Sie beinhaltet nicht die Möglichkeit, neue Signaturen in einem Dokument zu erzeugen.


Signaturen aus einem Dokument lesen

Jedes Document stellt eine DigitalSignatures Eigenschaft bereit, die ein DigitalSignatureCollection zurückgibt — eine schreibgeschützte, aufzählbare Sammlung von DigitalSignature Objekten, die bereits in der geladenen Datei vorhanden sind. DigitalSignatureUtil.LoadSignatures(fileName) (und die LoadSignatures(stream) Überladung) liest Signaturen direkt aus einer Datei oder einem Stream, ohne das gesamte Dokument in ein Document Objekt zu laden, was nützlich ist, wenn Sie nur den Signaturstatus prüfen müssen. Die IsValid Eigenschaft der Sammlung gibt an, ob jede enthaltene Signatur gültig ist, und Count gibt an, wie viele Signaturen gefunden wurden.


Untersuchung einer einzelnen Signatur

Jedes DigitalSignature stellt IsValid (ob die Signatur kryptografisch gültig ist), SignatureType (ein DigitalSignatureType Wert — CryptoApi, XmlDsig oder Unknown), SignTime, Comments, SubjectName, IssuerName und die rohen SignatureValue Bytes bereit. Die CertificateHolder Eigenschaft gibt ein CertificateHolder Objekt zurück, das das Signaturzertifikat umschließt; seine Certificate Eigenschaft legt das zugrunde liegende X509Certificate2 offen, sodass Sie mit den eigenen Zertifikats-APIs von .NET Standardzertifikatsfelder (Aussteller, Betreff, Gültigkeitszeitraum) untersuchen können.


Was in dieser Ausgabe nicht unterstützt wird

Die API-Oberfläche deklariert weiterhin signaturbezogene Mitglieder — DigitalSignatureUtil.Sign(), SignOptions, und XmlDsigLevel — zur strukturellen Kompatibilität mit dem kommerziellen Aspose.Words für .NET Objektmodell, aber das Erstellen einer neuen digitalen Signatur in einem Dokument ist in dieser FOSS-Edition nicht funktional. Verwenden Sie diese Edition, um verify Signaturen, die bereits in einem Dokument existieren, zu verarbeiten; ein Signatur-Workflow erfordert Aspose.Words für .NET.


Tipps und bewährte Verfahren

  • Bevorzugen Sie DigitalSignatureUtil.LoadSignatures() gegenüber dem Öffnen des kompletten Document, wenn Sie lediglich prüfen müssen, ob eine Datei signiert ist — es vermeidet den Aufwand, den gesamten Dokumenteninhalt zu parsen.
  • Prüfen Sie zuerst DigitalSignatureCollection.IsValid für ein schnelles Bestehen/Fehlschlagen, bevor Sie einzelne DigitalSignature.IsValid-Werte durchgehen.
  • SignatureType gibt an, welcher Signaturmechanismus die Signatur erzeugt hat (CryptoApi vs. XmlDsig); dies beeinflusst, welche Zertifikatfelder relevant sind.
  • Behandeln Sie IsValid == false als harte Fehlbedingung in jeder automatisierten Dokument-Aufnahme-Pipeline — geben Sie Signatur-Metadaten einer ungültigen Signatur nicht als vertrauenswürdig aus.

Häufige Probleme

ProblemUrsacheLösung
DigitalSignatures.Count ist 0 bei einer signierten .docxDatei wurde von einem Tool erneut gespeichert, das den Signaturteil entfernt hatÜberprüfen Sie anhand der original signierten Datei, nicht einer erneut gespeicherten Kopie
Signatur meldet IsValid = falseDokumentinhalt nach der Signatur geändert, oder das Zertifikat ist nicht vertrauenswürdig/abgelaufenAls ungültig behandeln; versuchen Sie nicht, die Signatur zu “reparieren”
Der Versuch, ein Dokument zu signieren, hat keine WirkungSignieren ist in dieser FOSS-Edition nicht implementiertVerwenden Sie Aspose.Words für .NET (kommerziell) für Signatur-Workflows
CertificateHolder.Certificate wirft beim InspizierenDie zugrunde liegenden Zertifikatsdaten sind fehlerhaft oder der Signaturteil ist beschädigtStellen Sie sicher, dass die Quelldatei ein echtes, unverändertes signiertes Dokument ist

FAQ

Kann Aspose.Words FOSS für .NET ein Dokument signieren?

Nein. Diese Edition kann vorhandene digitale Signaturen verifizieren, aber keine neuen erstellen. Die DigitalSignatureUtil.Sign()-Methode und die SignOptions-Klasse existieren in der API-Oberfläche für strukturelle Kompatibilität, aber das Signieren ist hier nicht funktionsfähig.

Wie prüfe ich, ob ein Dokument signiert ist, ohne es vollständig zu laden?

Rufen Sie DigitalSignatureUtil.LoadSignatures(fileName) auf, das ein DigitalSignatureCollection direkt aus der Datei zurückgibt.

Was bedeutet DigitalSignatureCollection.IsValid?

Es ist true nur, wenn jede Signatur in der Sammlung einzeln gültig ist — eine schnelle Möglichkeit, die Gesamtsignaturintegrität des Dokuments zu prüfen, bevor jede DigitalSignature einzeln untersucht wird.

Wo bekomme ich die Zertifikatsdetails für eine Signatur?

Über DigitalSignature.CertificateHolder.Certificate, das ein standardmäßiges .NET X509Certificate2 zurückgibt.


API Reference Zusammenfassung

Klasse / MethodeBeschreibung
Document.DigitalSignaturesSignaturen, die bereits an ein geladenes Dokument angehängt sind
DigitalSignatureUtil.LoadSignatures()Signaturen aus einer Datei oder einem Stream einlesen, ohne das gesamte Dokument zu laden.
DigitalSignatureCollectionNur-Lese-Sammlung von DigitalSignature-Objekten; IsValid, Count
DigitalSignatureEine einzelne Signatur: IsValid, SignTime, SubjectName, IssuerName, CertificateHolder
DigitalSignatureTypeEnum: CryptoApi, XmlDsig, Unknown
CertificateHolderUmwickelt die Signierung X509Certificate2

Siehe auch

 Deutsch