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 komplettenDocument, 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.IsValidfür ein schnelles Bestehen/Fehlschlagen, bevor Sie einzelneDigitalSignature.IsValid-Werte durchgehen. SignatureTypegibt an, welcher Signaturmechanismus die Signatur erzeugt hat (CryptoApivs.XmlDsig); dies beeinflusst, welche Zertifikatfelder relevant sind.- Behandeln Sie
IsValid == falseals harte Fehlbedingung in jeder automatisierten Dokument-Aufnahme-Pipeline — geben Sie Signatur-Metadaten einer ungültigen Signatur nicht als vertrauenswürdig aus.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
DigitalSignatures.Count ist 0 bei einer signierten .docx | Datei 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 = false | Dokumentinhalt nach der Signatur geändert, oder das Zertifikat ist nicht vertrauenswürdig/abgelaufen | Als ungültig behandeln; versuchen Sie nicht, die Signatur zu “reparieren” |
| Der Versuch, ein Dokument zu signieren, hat keine Wirkung | Signieren ist in dieser FOSS-Edition nicht implementiert | Verwenden Sie Aspose.Words für .NET (kommerziell) für Signatur-Workflows |
CertificateHolder.Certificate wirft beim Inspizieren | Die zugrunde liegenden Zertifikatsdaten sind fehlerhaft oder der Signaturteil ist beschädigt | Stellen 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 / Methode | Beschreibung |
|---|---|
Document.DigitalSignatures | Signaturen, 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. |
DigitalSignatureCollection | Nur-Lese-Sammlung von DigitalSignature-Objekten; IsValid, Count |
DigitalSignature | Eine einzelne Signatur: IsValid, SignTime, SubjectName, IssuerName, CertificateHolder |
DigitalSignatureType | Enum: CryptoApi, XmlDsig, Unknown |
CertificateHolder | Umwickelt die Signierung X509Certificate2 |