Цифровая подпись с отметкой времени в PDF-файле

Введение

Вам когда-нибудь требовалось подписать PDF-файл цифровой подписью и включить временную метку для дополнительной безопасности? Работаете ли вы с юридическими документами, контрактами или чем-то, что требует безопасной аутентификации, цифровая подпись с временной меткой добавляет дополнительный уровень доверия. В этом руководстве мы разберем, как можно использовать Aspose.PDF для .NET для добавления цифровой подписи вместе с временной меткой в ваши PDF-документы. Не волнуйтесь, мы сделаем это шаг за шагом!

Предпосылки

Прежде чем мы погрузимся в код, вам нужно настроить несколько вещей, чтобы следовать дальше. Вот краткий контрольный список предварительных условий, чтобы вы начали:

  • Библиотека Aspose.PDF for .NET: Вам понадобится библиотека Aspose.PDF for .NET, установленная в вашем проекте. Вы можетескачать последнюю версию здесь или добавьте его в свой проект через NuGet.
  • Документ PDF: Вам понадобится образец файла PDF для работы. Убедитесь, что в каталоге вашего проекта есть файл, который вы хотите подписать.
  • Цифровой сертификат (файл PFX): убедитесь, что у вас есть цифровой сертификат (файл.pfx файл) для цифровой подписи документа.
  • URL-адрес временной метки: это онлайн-сервис временной метки, который будет использоваться для прикрепления временной метки к цифровой подписи.
  • Базовые знания C#: Вам не нужно быть экспертом, но знание основ C# поможет вам понять и настроить код.

Как только вы отметите все эти поля, вы готовы приступить к написанию кода!

Импортные пакеты

Для начала вам нужно импортировать следующие пространства имен в ваш проект C#. Это гарантирует вам доступ к соответствующим классам и функциям Aspose.PDF.

using System.IO;
using System;
using Aspose.Pdf;
using Aspose.Pdf.Facades;
using Aspose.Pdf.Forms;
using System.Collections;

Шаг 1: Загрузите PDF-документ

Первое, что нам нужно сделать, это загрузить PDF-документ, который мы хотим подписать. Вот как это сделать:

// Определите путь к каталогу ваших документов.
string dataDir = "YOUR DOCUMENTS DIRECTORY";

// Загрузите PDF-документ
Document document = new Document(dataDir + @"DigitallySign.pdf");

Этот шаг довольно прост. Мы просто определяем путь к документу, который хотим подписать.Document класс из Aspose.PDF обрабатывает загрузку файла.

Шаг 2: Настройте цифровую подпись

Далее мы создадим цифровую подпись с использованием класса PKCS7 и загрузим файл PFX. Этот файл PFX содержит ваш сертификат и закрытый ключ, которые необходимы для подписания документа.

// Путь к вашему .pfx-файлу
string pfxFile = "YOUR DOCUMENTS DIRECTORY\\certificate.pfx";

// Инициализируйте объект подписи
PdfFileSignature signature = new PdfFileSignature(document);

// Загрузите PFX-файл с паролем
PKCS7 pkcs = new PKCS7(pfxFile, "pfx_password");

На этом этапе вы сообщаете Aspose, что нужно использовать ваш цифровой сертификат для подписи документа.PKCS7object выполняет всю криптографическую работу за вас, поэтому вам не придется беспокоиться о мелких деталях.

Шаг 3: Добавьте настройки временной метки

Одним из ключевых компонентов надежной цифровой подписи является временная метка. Она гарантирует, что подпись документа может быть проверена даже после истечения срока действия сертификата. Давайте настроим временную метку с помощью онлайн-центра временных меток.

// Определить настройки временной метки
TimestampSettings timestampSettings = new TimestampSettings("https://your_timestamp_url", "пользователь:пароль");

// Добавить настройки временной метки к объекту PKCS7
pkcs.TimestampSettings = timestampSettings;

Здесь вы указываете URL для сервиса временных меток, который автоматически добавит время и дату к вашей подписи. Это можно сделать с аутентификацией или без нее.

Шаг 4: Определите место и внешний вид подписи

Теперь мы определим, где в PDF-файле будет отображаться подпись и ее размеры. Вы можете настроить положение поля подписи на странице, а также размер.

//Определить внешний вид и местонахождение подписи (страница 1, с указанным прямоугольником)
System.Drawing.Rectangle rect = new System.Drawing.Rectangle(100, 100, 200, 100);

Здесь мы определяем прямоугольник, который размещает подпись в точке с координатами (100, 100) на первой странице PDF-файла, с шириной 200 и высотой 100. Вы можете изменить эти значения в соответствии со своим дизайном.

Шаг 5: Подпишите PDF-документ

Когда все настроено, пришло время применить цифровую подпись к PDF. Этот шаг объединяет сертификат, временную метку и позиционирование в одну простую команду.

// Подпишите документ на первой странице.
signature.Sign(1, "Signature Reason", "Contact", "Location", true, rect, pkcs);

Вот что происходит:

  • 1: Это означает, что подпись следует поставить на первой странице.
  • «Причина подписи»: здесь вы можете указать, почему вы подписываете документ.
  • «Контакт»: введите контактную информацию подписавшего.
  • «Местоположение»: укажите местонахождение подписавшего.
  • true: это логическое значение указывает, видна ли подпись в документе.
  • rect: прямоугольник, который мы определили ранее, определяет размер и положение подписи.
  • pkcs: Объект PKCS7 содержит настройки цифрового сертификата и временной метки.

Шаг 6: Сохраните подписанный PDF-файл

После того, как документ подписан, все, что остается сделать, это сохранить его. Вы можете выбрать новое имя файла, чтобы сохранить как оригинальную, так и подписанную версию.

// Сохраните подписанный PDF-документ
signature.Save(dataDir + "DigitallySignWithTimeStamp_out.pdf");

Ваш недавно подписанный и снабженный временной меткой PDF-файл теперь сохранен в указанном каталоге!

Заключение

И вот оно! Вы успешно подписали PDF-файл цифровой подписью с временной меткой с помощью Aspose.PDF для .NET. Этот процесс гарантирует подлинность и целостность ваших документов, давая вам и получателю душевное спокойствие. Цифровые подписи становятся все более и более необходимыми в современном цифровом мире, поэтому овладение этим процессом — определенно стоящий навык.

Часто задаваемые вопросы

Могу ли я использовать другой формат файла для сертификата?

Да, но в руководстве основное внимание уделяется использованию файла PFX, который является наиболее распространенным форматом цифровых сертификатов.

Нужно ли мне подключение к Интернету для применения временной метки?

Да, поскольку временная метка извлекается из онлайн-организации, предоставляющей временные метки, вам потребуется доступ в Интернет.

Могу ли я подписать несколько страниц в PDF-файле?

Конечно! Вы можете изменитьsignature.Sign() метод для выбора нескольких страниц или циклического просмотра всех страниц.

Что произойдет, если пароль PFX-файла неверный?

Если пароль неверный, вы получите исключение, поэтому убедитесь, что вы ввели его правильно.

Можно ли сделать подпись невидимой?

Да, вы можете пройтиfalse кSign Параметр видимости метода, позволяющий сделать подпись невидимой.