Podpisy cyfrowe
Podpisy cyfrowe
Aspose.Words FOSS dla .NET może przeglądać i weryfikować cyfrowe podpisy, które są już dołączone do a .docx dokumentu poprzez the Aspose.Words.DigitalSignatures przestrzeni nazw. Ta edycja obejmuje podpis verification — odczytywanie metadanych podpisu, sprawdzanie ważności oraz badanie certyfikatu podpisującego. Nie obejmuje możliwości tworzenia nowych podpisów w dokumencie.
Odczytywanie podpisów z dokumentu
Każdy Document udostępnia właściwość DigitalSignatures, zwracającą DigitalSignatureCollection — kolekcję tylko do odczytu, wyliczalną DigitalSignature obiektów już obecnych w załadowanym pliku. DigitalSignatureUtil.LoadSignatures(fileName) (oraz przeciążenie LoadSignatures(stream)) odczytuje podpisy bezpośrednio z pliku lub strumienia, bez ładowania pełnego dokumentu do obiektu Document, co jest przydatne, gdy potrzebujesz jedynie sprawdzić status podpisu. Właściwość IsValid kolekcji informuje, czy każdy zawarty w niej podpis jest ważny, a Count podaje, ile podpisów zostało znalezionych.
Badanie pojedynczego podpisu
Każdy DigitalSignature udostępnia IsValid (czy podpis jest kryptograficznie ważny), SignatureType (wartość DigitalSignatureType — CryptoApi, XmlDsig lub Unknown), SignTime, Comments, SubjectName, IssuerName oraz surowe bajty SignatureValue. Właściwość CertificateHolder zwraca obiekt CertificateHolder opakowujący certyfikat podpisującego; jego właściwość Certificate udostępnia podstawowy X509Certificate2, abyś mógł przeglądać standardowe pola certyfikatu (wydawca, podmiot, okres ważności) przy użyciu własnych interfejsów API certyfikatów .NET.
Co nie jest obsługiwane w tej edycji
Powierzchnia API wciąż deklaruje członków związanych z podpisywaniem — DigitalSignatureUtil.Sign(), SignOptions, oraz XmlDsigLevel — w celu zachowania zgodności strukturalnej z komercyjnym modelem obiektowym Aspose.Words dla .NET, ale tworzenie nowego cyfrowego podpisu w dokumencie nie jest funkcjonalne w tej edycji FOSS. Użyj tej edycji do verify podpisów, które już istnieją w dokumencie; przepływ pracy podpisywania wymaga Aspose.Words dla .NET.
Wskazówki i najlepsze praktyki
- Preferuj
DigitalSignatureUtil.LoadSignatures()zamiast otwierania pełnegoDocument, gdy potrzebujesz jedynie sprawdzić, czy plik jest podpisany — unika to kosztu parsowania całego ciała dokumentu. - Sprawdź najpierw
DigitalSignatureCollection.IsValidw celu szybkiego określenia sukcesu/porażki, zanim przejdziesz do iteracji poszczególnych wartościDigitalSignature.IsValid. SignatureTypeinformuje, który mechanizm podpisu wygenerował podpis (CryptoApivs.XmlDsig); ma to wpływ na to, które pola certyfikatu są istotne.- Traktuj
IsValid == falsejako warunek twardej awarii w każdym zautomatyzowanym pipeline’ie przyjmowania dokumentów — nie prezentuj metadanych podpisu z nieprawidłowego podpisu jako godnych zaufania.
Typowe problemy
| Problem | Przyczyna | Naprawa |
|---|---|---|
DigitalSignatures.Count jest 0 w podpisanym .docx | Plik został ponownie zapisany przez narzędzie, które usunęło część podpisu | Zweryfikuj względem oryginalnego podpisanego pliku, a nie ponownie zapisanego egzemplarza |
Podpis raportuje IsValid = false | Zawartość dokumentu zmieniła się po podpisaniu lub certyfikat jest niezaufany/przedawniony | Traktuj jako nieważny; nie próbuj „repair” podpisu |
| Próba podpisania dokumentu nie ma skutku | Podpisywanie nie jest zaimplementowane w tej edycji FOSS | Użyj Aspose.Words dla .NET (komercyjny) w przepływach podpisywania |
CertificateHolder.Certificate rzuca wyjątek podczas inspekcji | Podstawowe dane certyfikatu są nieprawidłowe lub część podpisu jest uszkodzona | Potwierdź, że plik źródłowy jest autentycznym, niezmodyfikowanym podpisanym dokumentem |
FAQ
Czy Aspose.Words FOSS dla .NET może podpisać dokument?
Nie. Ta edycja może weryfikować istniejące podpisy cyfrowe, ale nie może tworzyć nowych. Metoda DigitalSignatureUtil.Sign() i klasa SignOptions istnieją w warstwie API w celu zachowania kompatybilności strukturalnej, jednak podpisywanie nie jest tutaj funkcjonalne.
Jak sprawdzić, czy dokument jest podpisany, bez pełnego wczytywania?
Wywołaj DigitalSignatureUtil.LoadSignatures(fileName), który zwraca DigitalSignatureCollection bezpośrednio z pliku.
Co oznacza DigitalSignatureCollection.IsValid?
Jest true tylko wtedy, gdy każdy podpis w zbiorze jest indywidualnie ważny — szybki sposób na sprawdzenie ogólnej integralności podpisu dokumentu przed przeglądaniem każdego DigitalSignature.
Gdzie mogę uzyskać szczegóły certyfikatu dla podpisu?
Poprzez DigitalSignature.CertificateHolder.Certificate, który zwraca standardowy .NET X509Certificate2.
API Reference Podsumowanie
| Klasa / Metoda | Opis |
|---|---|
Document.DigitalSignatures | Podpisy już dołączone do wczytanego dokumentu |
DigitalSignatureUtil.LoadSignatures() | Odczytaj podpisy z pliku lub strumienia bez ładowania pełnego dokumentu |
DigitalSignatureCollection | Kolekcja tylko do odczytu obiektów DigitalSignature; IsValid, Count |
DigitalSignature | Pojedynczy podpis: IsValid, SignTime, SubjectName, IssuerName, CertificateHolder |
DigitalSignatureType | Wyliczenie: CryptoApi, XmlDsig, Unknown |
CertificateHolder | Opakowuje podpis X509Certificate2 |