Введение

Файлы PDF являются важной частью различных отраслей, и обеспечение их подлинности и целостности с помощью цифровых подписей является критически важной мерой безопасности. Цифровые подписи предоставляют юридическую силу и защищают документы от несанкционированных изменений. Это всестороннее руководство поможет вам реализовать подпись PDF в .NET, создав безопасную службу цифровой подписи PDF с использованием Azure Key Vault и GroupDocs.Signature for .NET.

Электронные подписи документов становятся все более важными для бизнесов, переходящих на безбумажные рабочие процессы. GroupDocs.Signature for .NET предлагает мощное решение для цифровой подписи PDF на C#, которое соответствует требованиям цифровой подписи в различных нормативных рамках. Будь вы новичком в подписи PDF в приложениях .NET или хотите улучшить существующую реализацию, это руководство охватывает все, что вам нужно знать.

Azure Key Vault — это облачная служба управления ключами, которая позволяет безопасно хранить и управлять криптографическими ключами и сертификатами. GroupDocs.Signature for .NET — это мощный и безопасный API для подписи PDF, который позволяет разработчикам программно применять цифровые подписи к файлам PDF. Интеграция этих технологий позволяет создать надежную и эффективную службу цифровой подписи PDF.

Одной из самых мощных функций, которую мы рассмотрим, является подпись с использованием пользовательского хэша, которая предоставляет исключительную гибкость для вашего рабочего процесса подписи. Этот подход позволяет подключать внешние устройства для подписи, такие как аппаратные модули безопасности (HSM), смарт-карты или любые другие криптографические устройства к вашему приложению. С помощью подписи с использованием пользовательского хэша разработчики могут создавать собственные службы подписи, которые взаимодействуют с проприетарными системами, устаревшей инфраструктурой или специализированным аппаратным обеспечением для безопасности, сохраняя при этом совместимость с фреймворком GroupDocs.Signature. Это делает его идеальным решением для организаций с определенными требованиями к безопасности или существующими инвестициями в криптографическую инфраструктуру.

🔐 Создание Azure Key Vault и сертификата

Начнем с настройки Azure Key Vault и генерации сертификата.

Шаг 1: Развертывание Key Vault

Создайте новый ресурс Azure Key Vault с помощью портала Azure. Для подробных инструкций ознакомьтесь с этим быстрым стартом.

💡 Если у вас нет активной подписки Azure, вы можете зарегистрироваться для бесплатной пробной версии на 1 месяц, чтобы начать.

Шаг 2: Создание или импорт вашего сертификата

После запуска Key Vault перейдите на его панель управления, выберите вкладку Certificates и нажмите Generate/Import, чтобы добавить ваш сертификат.

Интерфейс Azure Key Vault для создания цифровых сертификатов подписи для подписи PDF

Шаг 3: В поле Method of Certificate Creation выберите Generate, чтобы автоматически создать новый сертификат. В этом примере мы выбираем Self-signed certificate в качестве типа сертификационного центра.

Полная диаграмма рабочего процесса подписи PDF с использованием GroupDocs .NET и Azure Key Vault

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

Пример кода на C# для реализации подписи с использованием пользовательского хэша с GroupDocs.Signature

Шаг 4: Перейдите в Advanced Policy Configuration и установите параметр Private Key Export в No.

Диаграмма процесса подписи сертификатов Azure, показывающая поток данных между компонентами

Шаг 5: Наконец, нажмите Create. Сертификат теперь будет добавлен в ваш Key Vault.

Чтобы просмотреть его свойства, просто нажмите на сертификат, чтобы открыть его свойства.

Пример проверки подписи PDF в приложении .NET, показывающий результаты проверки

⚙️ Регистрация приложения для получения доступа к Azure Key Vault

Чтобы Web API мог получить доступ к Azure Key Vault, необходимо зарегистрировать его в Azure Active Directory:

Шаг 1: Перейдите в Azure Active Directory, выберите App registrations и нажмите New registration.

Интеграция электронных подписей документов между Azure Key Vault и GroupDocs

Шаг 2: Введите имя вашего приложения и зарегистрируйтесь.

Экран настройки безопасной API подписи PDF с параметрами безопасности

После регистрации вы получите ключевые детали — скопируйте Client ID и Tenant ID для использования в вашем приложении.

Интерфейс настройки политики доступа Azure Key Vault для разрешений подписи

Шаг 3: Затем выберите API Permissions из бокового меню и нажмите Add Permission. Выберите Azure Key Vault, выберите Full Access и завершите процесс, нажав Add Permissions.

Пример вывода подписи PDF в .NET, показывающий успешно подписанный документ

Шаг 4: Выберите Certificate & secrets и нажмите New client secret, чтобы создать новый секретный ключ. Скопируйте этот ключ для доступа к нему из вашего приложения .NET.

Диаграмма интеграции внешнего устройства подписи для реализации пользовательского хэша GroupDocs

🔐 Назначение политики доступа Azure Key Vault

В предыдущих шагах мы создали и зарегистрировали приложение. Теперь нам нужно предоставить новому зарегистрированному приложению доступ к Azure Key Vault:

Шаг 1: Перейдите в Azure Key Vault, выберите Access Policies и нажмите Create.

Настройка параметров соответствия цифровой подписи для нормативных требований

Шаг 2: Выберите необходимые разрешения и нажмите Next.

Регистрация приложения Azure Active Directory для услуг подписи PDF

Шаг 3: В этом окне выберите приложение, которое мы зарегистрировали ранее, GroupDocs.Signature.Service, и нажмите Create.

Диаграмма архитектуры пользовательских служб подписи, показывающая отношения между компонентами
Панель настроек внешнего вида GroupDocs Signature для визуальной настройки подписи

Приложение теперь появится в разделе Access Policies.

Процесс проверки цифровой подписи PDF, показывающий этапы рабочего процесса проверки

📑 Как использовать Azure Key Vault с GroupDocs.Signature for .NET для подписи PDF

Это всестороннее руководство объясняет, как подписывать документы PDF с использованием API GroupDocs.Signature в .NET с подписью с использованием пользовательского хэша, который использует Azure Key Vault. Мы разобьем процесс на четкие шаги — от настройки вашей среды C# до реализации пользовательского подписателя хэша, который соответствует требованиям цифровой подписи.

Обзор безопасной подписи PDF с реализацией пользовательского хэша

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

  • Настройка вашего приложения .NET для работы с GroupDocs.Signature для цифровой подписи PDF
  • Настройка профессиональных параметров цифровой подписи с правильным управлением сертификатами
  • Реализация механизма подписи с использованием пользовательского хэша для максимальной гибкости
  • Интеграция Azure Key Vault для безопасного получения общедоступного сертификата и подписи документа
  • Соблюдение лучших практик безопасности на протяжении всей реализации

Для дополнительной информации ознакомьтесь с документацией GroupDocs.Signature по цифровой подписи с использованием пользовательского хэша.

🚀 Преимущества подписи с использованием пользовательского хэша для приложений PDF на .NET

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

  1. Интеграция с внешними устройствами подписи: Подпись с использованием пользовательского хэша позволяет беспрепятственно подключаться к аппаратным модулям безопасности (HSM), смарт-картам, биометрическим устройствам и другим специализированным криптографическим аппаратным средствам, которые ваша организация может уже использовать.
  2. Гибкая архитектура для корпоративных решений: Организации могут создавать собственные службы подписи, которые взаимодействуют с существующей инфраструктурой, устаревшими системами или проприетарными решениями подписи, сохраняя при этом совместимость с GroupDocs.Signature.
  3. Улучшенное соответствие требованиям безопасности: Разделение генерации хэша и фактического процесса подписи позволяет лучше контролировать криптографические операции, помогая соответствовать строгим нормативным требованиям, таким как eIDAS, ESIGN Act и специфические для отрасли стандарты соответствия.
  4. Поддержка управления ключами в облаке: Интеграция с Azure Key Vault позволяет сертификатам безопасно храниться и управляться в сертифицированной безопасной инфраструктуре Microsoft, а не на локальных машинах.
  5. Настройка процесса подписи: Реализуйте пользовательские рабочие процессы утверждения, последовательности подписи несколькими сторонами или специализированные правила проверки, которые выходят за рамки стандартных реализаций цифровой подписи.

Шаг 1. Настройка среды цифровой подписи PDF на C#

Начните с определения путей к файлам и инициализации объекта GroupDocs.Signature в вашем приложении C#. В этом примере мы указываем исходный файл PDF и место назначения для подписанного документа.

public static void SignDocument()
{
    // Определите пути для исходного и выходного документов
    string sampleFilePath = "sample.pdf";
    string sampleOutputFilePath = "signed.pdf";

    using (Signature signature = new Signature(sampleFilePath))
    {
        // Код продолжается в следующих шагах...
    }
}

📌 Примечание:

Этот шаг создает новый экземпляр Signature, который загружает PDF-документ, который вы хотите подписать, устанавливая основу для безопасной подписи PDF в вашем приложении .NET.


Шаг 2. Настройка параметров цифровой подписи

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

// Инициализация параметров цифровой подписи
DigitalSignOptions options = new DigitalSignOptions()
{
    Signature = new DigitalSignature(),
    Password = "1234567890",      // Пароль сертификата
    Reason = "Sign",              // Причина подписи
    Contact = "JohnSmith",        // Контактная информация
    Location = "Office1",         // Место подписи
    AllPages = true,              // Применить подпись ко всем страницам
    Width = 80,
    Height = 60,
    VerticalAlignment = VerticalAlignment.Bottom,
    HorizontalAlignment = HorizontalAlignment.Right,
    Margin = new Padding() { Bottom = 10, Right = 10 },
    HashAlgorithm = HashAlgorithm.Sha256 // Укажите SHA-256 для хэширования
};

📌 Примечание:

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

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


Шаг 3. Реализация подписи с использованием пользовательского хэша

Теперь назначьте вашего пользовательского подписателя хэша параметрам. Этот пользовательский подписатель реализует интерфейс ICustomSignHash и будет использоваться для подписи хэша с Azure Key Vault или любым другим внешним устройством подписи, которое вы хотите интегрировать.

var azureSigner = new AzureSigner();
options.CustomSignHash = azureSigner;
options.Signature.Certificate = azureSigner.GetPublicCertificateFromAzureStorage();

📌 Примечание:

Здесь создается экземпляр AzureSigner. Его метод CustomSignHash будет вызван во время процесса подписи, и он также извлекает общедоступный сертификат из Azure Key Vault.


Шаг 4. Подпись документа

Наконец, вызовите метод Sign, чтобы сгенерировать подписанный PDF-документ с использованием вашей реализации подписи с использованием пользовательского хэша.

signature.Sign(sampleOutputFilePath, options);

📌 Примечание:

Этот метод применяет вашу цифровую подпись к документу с использованием ранее настроенных параметров, включая вашего пользовательского подписателя хэша. Результат PDF будет содержать криптографически безопасную подпись, которую можно проверить с помощью стандартных PDF-читателей или программно с помощью функций проверки GroupDocs.Signature.


Шаг 5. Подробная реализация подписи сертификата Azure

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

public class AzureSigner : ICustomSignHash
{
    public byte[] CustomSignHash(byte[] hash, HashAlgorithm hashAlgorithm,
     SignatureContext signatureContext)
    {
        // Делегируйте операцию подписи Azure
        return SignWithAzure(hash);
    }

    private static byte[] SignWithAzure(byte[] signableHash)
    {
        // Извлеките учетные данные Azure
        var credential = GetAzureSecretCredential();

        // Укажите идентификатор ключа сертификата Key Vault
        var certificateKeyId =
        "https://groupdocskeyvault.vault.azure.net/keys/GroupDocsSignatureCertificate/>";
        CryptographyClient client =
            new CryptographyClient(new Uri(certificateKeyId), credential);

        // Подпишите хэш с использованием RS256
        var result = client.Sign(SignatureAlgorithm.RS256, signableHash);
        return result.Signature;
    }

    static ClientSecretCredential GetAzureSecretCredential()
    {
        // Укажите детали вашего Azure AD, клиента и секрета
        string tenantId = "your tenant id";
        string clientId = "your client id";
        string secret = "your secret";
        ClientSecretCredential credential =
            new ClientSecretCredential(tenantId, clientId, secret);
        return credential;
    }

    public X509Certificate2 GetPublicCertificateFromAzureStorage()
    {
        // Определите URI Key Vault
        string vaultUri = "https://groupdocskeyvault.vault.azure.net/>";
        var credential  = GetAzureSecretCredential();
        X509Certificate2 pubCertificate =
        GetPublicCertificateFromAzureStorage(credential, vaultUri);
        return pubCertificate;
    }

    static X509Certificate2 GetPublicCertificateFromAzureStorage(
        ClientSecretCredential credential, string uri)
    {
        // Создайте клиента сертификатов для Key Vault
        CertificateClient certificateClient =
            new CertificateClient(new Uri(uri), credential);

        // Извлеките сертификат с общедоступным ключом
        KeyVaultCertificateWithPolicy certificate =
        certificateClient.GetCertificateAsync("GroupDocsSignatureCertificate").Result;
        return new X509Certificate2(certificate.Cer);
    }
}

📌 Примечания:

  • Учетные данные Azure: Метод GetAzureSecretCredential создает учетные данные с использованием вашего идентификатора клиента, идентификатора клиента и секрета. Примечание по безопасности: убедитесь, что вы храните эти учетные данные безопасно (например, с использованием Azure Key Vault или безопасного хранилища конфигурации), чтобы поддерживать целостность вашей реализации подписи PDF в .NET.
  • Подпись с использованием Azure: Метод SignWithAzure использует CryptographyClient из Azure SDK для подписи хэша с сертификатом, хранящимся в Azure Key Vault, демонстрируя профессиональный подход к управлению сертификатами, который соответствует лучшим практикам цифровой подписи.
  • Извлечение общедоступного сертификата: Метод GetPublicCertificateFromAzureStorage подключается к вашему Azure Key Vault и извлекает сертификат, необходимый для проверки подписи, обеспечивая, чтобы ваши электронные подписи документов могли быть проверены соответствующим образом.

Шаг 6. Шаги реализации Azure Key Vault для цифровой подписи PDF

Чтобы интегрировать Azure Key Vault с вашими пользовательскими службами подписи, следуйте этим шагам:

  1. Настройка Azure Key Vault:
    • Создайте экземпляр Azure Key Vault.
    • Загрузите ваш сертификат подписи в Key Vault.
    • Настройте политики доступа для вашего приложения.
  2. Настройка учетных данных Azure:
    • Зарегистрируйте ваше приложение в Azure Active Directory.
    • Получите ваш идентификатор клиента, идентификатор клиента и клиентский секрет.
    • Создайте ClientSecretCredential для доступа к Key Vault.
  3. Извлечение сертификата:
    • Используйте CertificateClient, чтобы получить сертификат с общедоступным ключом из Azure Key Vault.
    • Этот сертификат используется для проверки цифровой подписи.
  4. Реализация пользовательской подписи:
    • Используйте CryptographyClient из Azure SDK для подписи хэша документа.
    • Укажите соответствующий алгоритм подписи (например, RS256).

📌 Примечание:

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


🧩 Расширение вашей реализации пользовательской подписи

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

  1. Аппаратные модули безопасности (HSM): Реализуйте пользовательского подписателя, который взаимодействует с физическими HSM для максимальной безопасности.
  2. Интеграция смарт-карт: Создайте подписателя, который взаимодействует со считывателями смарт-карт для корпоративных сред, требующих физической аутентификации.
  3. Биометрическая аутентификация: Создайте службу подписи, которая требует отпечатка пальца или распознавания лица перед авторизацией создания подписи.
  4. Утверждение несколькими сторонами: Реализуйте пользовательский рабочий процесс подписи, где несколько сторон должны утвердить, прежде чем будет применена окончательная подпись.
  5. Провайдеры облачных услуг: Адаптируйте пример для работы с AWS KMS, Google Cloud KMS или другими облачными службами управления ключами.

Создавая собственные службы подписи через интерфейс ICustomSignHash, вы сохраняете полный контроль над своими криптографическими операциями, в то время как используете мощные возможности обработки документов GroupDocs.Signature for .NET.


✨ Заключительные мысли об электронных подписях документов

Это руководство показало, как интегрировать GroupDocs.Signature с Azure Key Vault для создания соответствующих электронных подписей документов для файлов PDF безопасным способом. Электронные подписи документов, созданные этим методом, соответствуют отраслевым стандартам подлинности и целостности. Следуя этому пошаговому подходу и соблюдая лучшие практики безопасности (например, безопасное управление учетными данными), вы можете реализовать надежное решение цифровой подписи в вашем приложении .NET, которое работает на протяжении всего вашего рабочего процесса документов.

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


Получите бесплатную пробную версию

Вы можете попробовать API GroupDocs.Signature бесплатно, просто скачав и установив последнюю версию на нашем сайте с загрузками.

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

🔗 Смотрите также

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