Chữ ký số
Chữ ký số
Aspose.Words FOSS cho .NET có thể kiểm tra và xác minh các chữ ký số đã được đính kèm vào một .docx tài liệu thông qua Aspose.Words.DigitalSignatures không gian tên. Bản phát hành này bao gồm chữ ký verification — đọc siêu dữ liệu chữ ký, kiểm tra tính hợp lệ và xem xét chứng chỉ ký. Nó không bao gồm khả năng tạo chữ ký mới trên một tài liệu.
Đọc chữ ký từ tài liệu
Mỗi Document cung cấp một thuộc tính DigitalSignatures trả về một DigitalSignatureCollection — một tập hợp chỉ đọc, có thể liệt kê các đối tượng DigitalSignature đã có trong tệp đã tải. DigitalSignatureUtil.LoadSignatures(fileName) (và phiên bản LoadSignatures(stream)) đọc chữ ký trực tiếp từ tệp hoặc luồng mà không cần tải toàn bộ tài liệu vào đối tượng Document, điều này hữu ích khi bạn chỉ cần kiểm tra trạng thái chữ ký. Thuộc tính IsValid của tập hợp báo cáo liệu mọi chữ ký trong đó có hợp lệ hay không, và Count báo cáo số lượng chữ ký đã được tìm thấy.
Kiểm tra một chữ ký riêng lẻ
Mỗi DigitalSignature cung cấp IsValid (liệu chữ ký có hợp lệ về mặt mật mã), SignatureType (một giá trị DigitalSignatureType — CryptoApi, XmlDsig, hoặc Unknown), SignTime, Comments, SubjectName, IssuerName, và các byte thô SignatureValue. Thuộc tính CertificateHolder trả về một đối tượng CertificateHolder bao bọc chứng chỉ ký; thuộc tính Certificate của nó hiển thị X509Certificate2 nền để bạn có thể kiểm tra các trường chứng chỉ tiêu chuẩn (người phát hành, chủ thể, thời gian hiệu lực) bằng các API chứng chỉ riêng của .NET.
Những gì không được hỗ trợ trong phiên bản này
Bề mặt API vẫn khai báo các thành viên liên quan đến ký — DigitalSignatureUtil.Sign(), SignOptions, và XmlDsigLevel — để tương thích cấu trúc với mô hình đối tượng Aspose.Words thương mại cho .NET, nhưng việc tạo chữ ký số mới trên một tài liệu không hoạt động trong bản FOSS này. Sử dụng bản này để verify các chữ ký đã tồn tại trong tài liệu; quy trình ký yêu cầu Aspose.Words cho .NET.
Mẹo và Thực hành Tốt nhất
- Ưu tiên
DigitalSignatureUtil.LoadSignatures()hơn việc mở toàn bộDocumentkhi bạn chỉ cần kiểm tra xem tệp có được ký hay không — nó tránh chi phí phân tích toàn bộ nội dung tài liệu. - Kiểm tra
DigitalSignatureCollection.IsValidtrước để có kết quả nhanh pass/fail trước khi lặp qua các giá trịDigitalSignature.IsValidriêng lẻ. SignatureTypecho bạn biết cơ chế ký nào đã tạo ra chữ ký (CryptoApiso vớiXmlDsig); điều này ảnh hưởng tới các trường chứng chỉ có ý nghĩa.- Xem
IsValid == falsenhư một điều kiện thất bại nghiêm trọng trong bất kỳ quy trình tự động tiếp nhận tài liệu nào — không hiển thị siêu dữ liệu chữ ký từ một chữ ký không hợp lệ như là đáng tin cậy.
Các vấn đề thường gặp
| Vấn đề | Nguyên nhân | Khắc phục |
|---|---|---|
DigitalSignatures.Count là 0 trên một .docx đã ký | Tệp đã được lưu lại bởi một công cụ đã loại bỏ phần chữ ký | Xác minh so với tệp đã ký gốc, không phải bản sao đã lưu lại |
Chữ ký báo cáo IsValid = false | Nội dung tài liệu đã bị thay đổi sau khi ký, hoặc chứng chỉ không đáng tin / đã hết hạn | Xem như không hợp lệ; không cố gắng “sửa” chữ ký |
| Cố gắng ký một tài liệu không có tác dụng | Chức năng ký chưa được triển khai trong phiên bản FOSS này | Sử dụng Aspose.Words cho .NET (commercial) cho quy trình ký |
CertificateHolder.Certificate ném ngoại lệ khi được kiểm tra | Dữ liệu chứng chỉ nền tảng bị sai định dạng hoặc phần chữ ký bị hỏng | Xác nhận tệp nguồn là tài liệu ký thật, chưa bị chỉnh sửa |
FAQ
Liệu Aspose.Words FOSS cho .NET có thể ký một tài liệu không?
Không. Phiên bản này có thể xác minh các chữ ký số hiện có nhưng không thể tạo chữ ký mới. Phương pháp DigitalSignatureUtil.Sign() và lớp SignOptions tồn tại trong bề mặt API để tương thích cấu trúc, nhưng việc ký không hoạt động ở đây.
Làm thế nào để kiểm tra xem một tài liệu có được ký hay không mà không cần tải toàn bộ?
Gọi DigitalSignatureUtil.LoadSignatures(fileName), nó sẽ trả về một DigitalSignatureCollection trực tiếp từ tệp.
DigitalSignatureCollection.IsValid có nghĩa là gì?
Nó chỉ là true khi mọi chữ ký trong bộ sưu tập đều hợp lệ riêng lẻ — một cách nhanh chóng để kiểm tra tính toàn vẹn của chữ ký tài liệu tổng thể trước khi kiểm tra từng DigitalSignature.
Tôi có thể lấy chi tiết chứng chỉ của một chữ ký ở đâu?
Thông qua DigitalSignature.CertificateHolder.Certificate, nó trả về một .NET X509Certificate2 tiêu chuẩn.
API Reference Tóm tắt
| Lớp / Phương thức | Mô tả |
|---|---|
Document.DigitalSignatures | Chữ ký đã được đính kèm vào tài liệu đã tải |
DigitalSignatureUtil.LoadSignatures() | Đọc chữ ký từ tệp hoặc luồng mà không tải toàn bộ tài liệu |
DigitalSignatureCollection | Bộ sưu tập chỉ đọc của các đối tượng DigitalSignature; IsValid, Count |
DigitalSignature | Một chữ ký duy nhất: IsValid, SignTime, SubjectName, IssuerName, CertificateHolder |
DigitalSignatureType | Enum: CryptoApi, XmlDsig, Unknown |
CertificateHolder | Bao bọc việc ký X509Certificate2 |