Ψηφιακές Υπογραφές
Ψηφιακές Υπογραφές
Aspose.Words FOSS για .NET μπορεί να επιθεωρήσει και να επαληθεύσει ψηφιακές υπογραφές που είναι ήδη συνδεδεμένες σε ένα .docx έγγραφο μέσω του Aspose.Words.DigitalSignatures χώρο ονομάτων. Αυτή η έκδοση καλύπτει την υπογραφή verification — ανάγνωση μεταδεδομένων υπογραφής, έλεγχο εγκυρότητας και εξέταση του πιστοποιητικού υπογραφής. Δεν περιλαμβάνει τη δυνατότητα δημιουργίας νέων υπογραφών σε ένα έγγραφο.
Ανάγνωση Υπογραφών από Έγγραφο
Κάθε Document εκθέτει μια ιδιότητα DigitalSignatures που επιστρέφει ένα DigitalSignatureCollection — μια συλλογή μόνο για ανάγνωση, απαριθμήσιμη, των αντικειμένων DigitalSignature που είναι ήδη παρόντα στο φορτωμένο αρχείο. Το DigitalSignatureUtil.LoadSignatures(fileName) (και η υπερφόρτωση LoadSignatures(stream)) διαβάζει τις υπογραφές απευθείας από ένα αρχείο ή ροή χωρίς να φορτώνει ολόκληρο το έγγραφο σε ένα αντικείμενο Document, κάτι που είναι χρήσιμο όταν χρειάζεται μόνο να ελέγξετε την κατάσταση της υπογραφής. Η ιδιότητα IsValid της συλλογής αναφέρει αν κάθε υπογραφή που περιέχει είναι έγκυρη, και το Count αναφέρει πόσες υπογραφές βρέθηκαν.
Επιθεώρηση Μιας Μεμονωμένης Υπογραφής
Κάθε DigitalSignature εκθέτει IsValid (αν η υπογραφή είναι κρυπτογραφικά έγκυρη), SignatureType (μια τιμή DigitalSignatureType — CryptoApi, XmlDsig, ή Unknown), SignTime, Comments, SubjectName, IssuerName, και τα ακατέργαστα SignatureValue bytes. Η ιδιότητα CertificateHolder επιστρέφει ένα αντικείμενο CertificateHolder που περιβάλλει το πιστοποιητικό υπογραφής· η ιδιότητα Certificate του εκθέτει το υποκείμενο X509Certificate2 ώστε να μπορείτε να επιθεωρήσετε τα τυπικά πεδία του πιστοποιητικού (εκδότης, υποκείμενο, περίοδος ισχύος) με τις δικές του API πιστοποιητικών του .NET.
Τι Δεν Υποστηρίζεται σε Αυτή την Έκδοση
Η επιφάνεια API εξακολουθεί να δηλώνει μέλη σχετιζόμενα με την υπογραφή — DigitalSignatureUtil.Sign(), SignOptions, και XmlDsigLevel — για δομική συμβατότητα με το εμπορικό Aspose.Words για το μοντέλο αντικειμένων .NET, αλλά η δημιουργία νέας ψηφιακής υπογραφής σε ένα έγγραφο δεν είναι λειτουργική σε αυτήν την έκδοση FOSS. Χρησιμοποιήστε αυτήν την έκδοση για verify υπογραφές που ήδη υπάρχουν σε ένα έγγραφο· μια ροή εργασίας υπογραφής απαιτεί Aspose.Words για .NET.
Συμβουλές και βέλτιστες πρακτικές
- Προτιμήστε το
DigitalSignatureUtil.LoadSignatures()αντί για το άνοιγμα του πλήρουςDocumentόταν χρειάζεται μόνο να ελέγξετε αν ένα αρχείο είναι υπογεγραμμένο — αποφεύγει το κόστος της ανάλυσης ολόκληρου του σώματος του εγγράφου. - Ελέγξτε πρώτα το
DigitalSignatureCollection.IsValidγια γρήγορο αποτέλεσμα επιτυχίας/αποτυχίας πριν επαναλάβετε τις μεμονωμένες τιμές τουDigitalSignature.IsValid. - Το
SignatureTypeσας λέει ποιος μηχανισμός υπογραφής παρήγαγε την υπογραφή (CryptoApiέναντιXmlDsig); αυτό επηρεάζει ποια πεδία του πιστοποιητικού είναι σημαντικά. - Αντιμετωπίστε το
IsValid == falseως κατάσταση σκληρής αποτυχίας σε οποιοδήποτε αυτοματοποιημένο pipeline εισαγωγής εγγράφων — μην εμφανίζετε τα μεταδεδομένα της υπογραφής από μια μη έγκυρη υπογραφή ως αξιόπιστα.
Κοινά προβλήματα
| Πρόβλημα | Αιτία | Διόρθωση |
|---|---|---|
DigitalSignatures.Count είναι 0 σε ένα υπογεγραμμένο .docx | Το αρχείο αποθηκεύτηκε ξανά από ένα εργαλείο που αφαίρεσε το τμήμα της υπογραφής | Επαληθεύστε σε σχέση με το αρχικό υπογεγραμμένο αρχείο, όχι με ένα αποθηκευμένο ξανά αντίγραφο |
Η υπογραφή αναφέρει IsValid = false | Το περιεχόμενο του εγγράφου άλλαξε μετά την υπογραφή, ή το πιστοποιητικό δεν είναι αξιόπιστο/έχει λήξει | Αντιμετωπίζεται ως άκυρο· μην προσπαθήσετε να “repair” την υπογραφή |
| Η προσπάθεια υπογραφής ενός εγγράφου δεν έχει αποτέλεσμα | Η υπογραφή δεν έχει υλοποιηθεί σε αυτήν την έκδοση FOSS | Χρησιμοποιήστε Aspose.Words για .NET (εμπορικό) για τις ροές εργασίας υπογραφής |
CertificateHolder.Certificate προκαλεί εξαίρεση όταν επιθεωρείται | Τα υποκείμενα δεδομένα του πιστοποιητικού είναι κατεστραμμένα ή το τμήμα της υπογραφής είναι κατεστραμμένο | Επιβεβαιώστε ότι το αρχείο προέλευσης είναι ένα αυθεντικό, αμετάβλητο υπογεγραμμένο έγγραφο |
FAQ
Μπορεί το Aspose.Words FOSS για το .NET να υπογράψει ένα έγγραφο;
Όχι. Αυτή η έκδοση μπορεί να επαληθεύσει υπάρχουσες ψηφιακές υπογραφές, αλλά δεν μπορεί να δημιουργήσει νέες. Η μέθοδος DigitalSignatureUtil.Sign() και η κλάση SignOptions υπάρχουν στην επιφάνεια του API για δομική συμβατότητα, αλλά η υπογραφή δεν είναι λειτουργική εδώ.
Πώς μπορώ να ελέγξω αν ένα έγγραφο είναι υπογεγραμμένο χωρίς να το φορτώσω πλήρως;
Καλέστε το DigitalSignatureUtil.LoadSignatures(fileName), το οποίο επιστρέφει ένα DigitalSignatureCollection απευθείας από το αρχείο.
Τι σημαίνει το DigitalSignatureCollection.IsValid;
Είναι true μόνο όταν κάθε υπογραφή στη συλλογή είναι ατομικά έγκυρη — ένας γρήγορος τρόπος να ελέγξετε τη συνολική ακεραιότητα των υπογραφών του εγγράφου πριν ελέγξετε κάθε DigitalSignature.
Από πού μπορώ να λάβω τα στοιχεία του πιστοποιητικού για μια υπογραφή;
Μέσω του DigitalSignature.CertificateHolder.Certificate, το οποίο επιστρέφει ένα τυπικό .NET X509Certificate2.
API Reference Σύνοψη
| Κλάση / Μέθοδος | Περιγραφή |
|---|---|
Document.DigitalSignatures | Υπογραφές που έχουν ήδη επισυναφθεί σε φορτωμένο έγγραφο |
DigitalSignatureUtil.LoadSignatures() | Διαβάστε υπογραφές από αρχείο ή ροή χωρίς να φορτώνετε ολόκληρο το έγγραφο |
DigitalSignatureCollection | Συλλογή μόνο για ανάγνωση αντικειμένων DigitalSignature; IsValid, Count |
DigitalSignature | Μία μόνο υπογραφή: IsValid, SignTime, SubjectName, IssuerName, CertificateHolder |
DigitalSignatureType | Απαρίθμηση: CryptoApi, XmlDsig, Unknown |
CertificateHolder | Τυλίγει την υπογραφή X509Certificate2 |