Вступ

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

Електронні підписи документів стають все важливішими для компаній, які переходять на безпаперові процеси. GroupDocs.Signature for .NET пропонує потужне рішення C# для цифрового підпису PDF, яке відповідає вимогам комплаєнсу цифрових підписів у різних нормативних рамках. Незалежно від того, чи ви новачок у підписуванні 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 portal. Детальні інструкції — у цьому швидкому стартовому посібнику.

💡Якщо у вас немає активної підписки Azure, ви можете зареєструватися на 1‑місячний безкоштовний пробний період.

Крок 2: Генерація або імпорт вашого сертифікату

Після створення сховища перейдіть до його панелі, виберіть вкладку Certificates і натисніть Generate/Import, щоб додати сертифікат.

Azure Key Vault interface for creating digital signature certificates for PDF signing

Крок 3: У полі Method of Certificate Creation виберіть Generate, щоб автоматично створити новий сертифікат. У цьому прикладі ми обираємо Self-signed certificate як тип центру сертифікації.

Complete workflow diagram of GroupDocs .NET PDF digital signature process with Azure Key Vault

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

C# code example of custom hash signing implementation with GroupDocs.Signature

Крок 4: Перейдіть до Advanced Policy Configuration і встановіть параметр Private Key Export у No.

Azure certificate signing process diagram showing the data flow between components

Крок 5: Нарешті натисніть Create. Сертифікат буде додано до вашого сховища.

Щоб переглянути його деталі, просто клацніть на сертифікат, щоб відкрити його властивості.

PDF signature validation example in .NET application showing verification results

⚙️ Реєстрація застосунку для доступу до Azure Key Vault

Щоб Web API міг отримати доступ до Azure Key Vault, його потрібно зареєструвати в Azure Active Directory:

Крок 1: Перейдіть до Azure Active Directory, виберіть App registrations і натисніть New registration.

Electronic document signatures integration between Azure Key Vault and GroupDocs

Крок 2: Введіть назву вашого застосунку та зареєструйте його.

Secure PDF signing API configuration screen with security settings

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

Azure Key Vault access policy setup interface for digital signature permissions

Крок 3: Далі виберіть API Permissions у боковому меню і натисніть Add Permission. Оберіть Azure Key Vault, виберіть Full Access і заверште процес, натиснувши Add Permissions.

.NET PDF signing output example showing a successfully signed document

Крок 4: Виберіть Certificate & secrets і натисніть New client secret, щоб створити новий секретний ключ. Скопіюйте цей ключ для використання у вашому .NET‑застосунку.

External signing device integration diagram for GroupDocs custom hash implementation

🔐 Призначення політики доступу до Azure Key Vault

У попередніх кроках ми створили та зареєстрували застосунок. Тепер потрібно надати цьому застосунку доступ до Azure Key Vault:

Крок 1: Перейдіть до Azure Key Vault, виберіть Access Policies і натисніть Create.

Digital signature compliance settings configuration for regulatory requirements

Крок 2: Виберіть необхідні дозволи та натисніть Next.

Azure Active Directory application registration for PDF signing services

Крок 3: У цьому вікні оберіть раніше зареєстрований застосунок GroupDocs.Signature.Service і натисніть Create.

Custom sign services architecture diagram showing component relationships
GroupDocs Signature appearance settings panel for visual signature customization

Застосунок з’явиться у розділі Access Policies.

PDF digital signature verification process showing validation workflow steps

📑 Як використовувати 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 про цифровий підпис з кастомним хешем.

🚀 Переваги кастомного підпису хешу для .NET PDF‑застосунків

Перш ніж перейти до реалізації, важливо зрозуміти, чому кастомний підпис хешу — це значний крок уперед у технології цифрових підписів:

  1. Інтеграція з зовнішніми підписувальними пристроями: Кастомний хеш дозволяє безшовно підключатися до HSM, смарт‑карт, біометричних пристроїв та іншого спеціалізованого обладнання, яке вже використовується у вашій організації.
  2. Гнучка архітектура для корпоративних рішень: Організації можуть створювати власні сервіси підпису, що взаємодіють із існуючою інфраструктурою, застарілими системами або пропрієтарними рішеннями, залишаючись сумісними з GroupDocs.Signature.
  3. Покращений комплаєнс безпеки: Відокремлення генерації хешу від фактичного підпису дає кращий контроль над криптографічними операціями, допомагаючи відповідати суворим нормативним вимогам, таким як eIDAS, ESIGN Act та галузеві стандарти.
  4. Підтримка хмарного управління ключами: Інтеграція з Azure Key Vault дозволяє зберігати та керувати сертифікатами у сертифікованій інфраструктурі Microsoft, а не на локальних машинах.
  5. Налаштування процесу підпису: Реалізуйте кастомні робочі процеси затвердження, багатосторонні підписи або спеціалізовані правила валідації, що виходять за межі стандартних підписів.

Крок 1. Налаштування середовища C# для цифрового підпису PDF

Почніть з визначення шляхів до файлів та ініціалізації об’єкта GroupDocs.Signature у вашому C# застосунку. У цьому прикладі вказано вхідний PDF‑файл та шлях для збереження підписаного документа.

public static void SignDocument()  
{  
    // Define paths for the source and output documents  
    string sampleFilePath = "sample.pdf";  
    string sampleOutputFilePath = "signed.pdf";

    using (Signature signature = new Signature(sampleFilePath))  
    {  
        // Code continues in the next steps...  
    }  
}

📌Annotation:

Цей крок створює новий екземпляр Signature, який завантажує PDF‑документ, що підлягає підпису, закладаючи основу для безпечного підпису PDF у вашому .NET‑застосунку.


Крок 2. Налаштування параметрів цифрового підпису

Далі задайте параметри цифрового підпису. Вони включають дані сертифікату, візуальний вигляд та алгоритм хешування. Кастомний підпис хешу буде підключений пізніше.

// Initialize digital signing options  
DigitalSignOptions options = new DigitalSignOptions()  
{  
    Signature = new DigitalSignature(),  
    Password = "1234567890",      // Certificate password  
    Reason = "Sign",              // Signing reason  
    Contact = "JohnSmith",        // Contact information  
    Location = "Office1",         // Signing location  
    AllPages = true,              // Apply signature on all pages  
    Width = 80,  
    Height = 60,  
    VerticalAlignment = VerticalAlignment.Bottom,  
    HorizontalAlignment = HorizontalAlignment.Right,  
    Margin = new Padding() { Bottom = 10, Right = 10 },  
    HashAlgorithm = HashAlgorithm.Sha256 // Specify SHA-256 for hashing  
};

📌Annotation:

Налаштуйте базові властивості цифрового підпису, такі як вигляд, позиціонування та хешування, щоб ваші електронні підписи документів відповідали професійним стандартам.

Security note: У продакшн‑середовищі уникайте жорсткого кодування конфіденційних значень (наприклад, паролів); використовуйте безпечні методи конфігурації, сумісні з вимогами комплаєнсу цифрових підписів.


Крок 3. Реалізація кастомного підпису хешу

Тепер прив’яжіть ваш кастомний підписувач до параметрів. Цей підписувач реалізує інтерфейс ICustomSignHash і буде використаний для підпису хешу за допомогою Azure Key Vault або будь‑якого іншого зовнішнього пристрою.

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

📌Annotation:

Тут створюється екземпляр AzureSigner. Його метод CustomSignHash буде викликаний під час процесу підпису, а також він отримує публічний сертифікат з Azure Key Vault.


Крок 4. Підписання документа

Нарешті викличте метод Sign, щоб створити підписаний PDF‑документ за допомогою вашої реалізації кастомного підпису хешу.

signature.Sign(sampleOutputFilePath, options);

📌Annotation:

Метод застосовує ваш цифровий підпис до документа, використовуючи раніше налаштовані параметри, включаючи кастомний підпис хешу. Отриманий PDF міститиме криптографічно захищений підпис, який можна перевірити у стандартних PDF‑читачах або програмно за допомогою функцій валідації GroupDocs.Signature.


Крок 5. Детальна реалізація підпису сертифікатом Azure

Нижче наведено повну реалізацію кастомного підписувача, що використовує Azure Key Vault для підпису сертифікатом Azure. Клас демонструє професійні практики підпису сертифікатом Azure: отримання облікових даних, отримання публічного сертифікату та безпечне підписання хешу документа.

public class AzureSigner : ICustomSignHash  
{  
    public byte[] CustomSignHash(byte[] hash, HashAlgorithm hashAlgorithm,
     SignatureContext signatureContext)  
    {  
        // Delegate the signing operation to Azure  
        return SignWithAzure(hash);  
    }

    private static byte[] SignWithAzure(byte[] signableHash)  
    {  
        // Retrieve Azure credentials  
        var credential = GetAzureSecretCredential();

        // Specify your Key Vault certificate key identifier  
        var certificateKeyId = 
        "https://groupdocskeyvault.vault.azure.net/keys/GroupDocsSignatureCertificate/>";  
        CryptographyClient client = 
            new CryptographyClient(new Uri(certificateKeyId), credential);

        // Sign the hash using RS256  
        var result = client.Sign(SignatureAlgorithm.RS256, signableHash);  
        return result.Signature;  
    }

    static ClientSecretCredential GetAzureSecretCredential()  
    {  
        // Provide your Azure AD tenant, client, and secret details  
        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()  
    {  
        // Define the Key Vault URI  
        string vaultUri = "https://groupdocskeyvault.vault.azure.net/>";  
        var credential  = GetAzureSecretCredential();  
        X509Certificate2 pubCertificate = 
        GetPublicCertificateFromAzureStorage(credential, vaultUri);  
        return pubCertificate;  
    }

    static X509Certificate2 GetPublicCertificateFromAzureStorage(
        ClientSecretCredential credential, string uri)  
    {  
        // Create a certificate client for the Key Vault  
        CertificateClient certificateClient = 
            new CertificateClient(new Uri(uri), credential);

        // Retrieve the certificate with the public key  
        KeyVaultCertificateWithPolicy certificate = 
        certificateClient.GetCertificateAsync("GroupDocsSignatureCertificate").Result;  
        return new X509Certificate2(certificate.Cer);  
    }  
}

📌Annotations:

  • Azure Credentials:
    Метод GetAzureSecretCredential створює облікові дані, використовуючи ваш tenant ID, client ID та secret. Security note: Переконайтеся, що ці дані зберігаються безпечно (наприклад, у Azure Key Vault або захищеному сховищі конфігурації), щоб зберегти цілісність вашої реалізації .NET PDF signing.
  • Signing with Azure:
    Метод SignWithAzure використовує CryptographyClient з Azure SDK для підпису хешу сертифікатом, що зберігається в Azure Key Vault, демонструючи професійний підхід до управління сертифікатами згідно з кращими практиками комплаєнсу цифрових підписів.
  • Public Certificate Retrieval:
    Метод GetPublicCertificateFromAzureStorage підключається до вашого Azure Key Vault і отримує сертифікат, необхідний для верифікації підпису, забезпечуючи можливість коректної перевірки електронних підписів документів.

Крок 6. Кроки впровадження Azure Key Vault для цифрових підписів PDF

Щоб інтегрувати Azure Key Vault у ваші кастомні сервіси підпису, виконайте наступне:

  1. Налаштування Azure Key Vault:
    • Створіть екземпляр Azure Key Vault.
    • Завантажте ваш підписний сертифікат у сховище.
    • Налаштуйте політики доступу для вашого застосунку.
  2. Конфігурація Azure‑облікових даних:
    • Зареєструйте ваш застосунок в Azure Active Directory.
    • Отримайте tenant ID, client ID та client secret.
    • Створіть ClientSecretCredential для доступу до Key Vault.
  3. Отримання сертифікату:
    • Використайте CertificateClient для отримання сертифікату з публічним ключем з Azure Key Vault.
    • Цей сертифікат використовується для верифікації цифрового підпису.
  4. Реалізація кастомного підпису:
    • За допомогою CryptographyClient підписуйте хеш документа.
    • Вкажіть відповідний алгоритм підпису (наприклад, RS256).

📌Annotation:

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


🧩 Розширення вашої реалізації кастомного підпису

Перевага підходу кастомного підпису хешу в 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‑застосунку, що працюватиме протягом усього документообігу.

Для додаткових деталей та розширених сценаріїв звертайтеся до офіційної документації.


Get a Free Trial

You can try GroupDocs.Signature APIs for free by just downloading and installing the latest version on our release downloads website.

You can also get a temporary license to test all the library’s functionalities without any constraints. Head to the temporary license page to apply for a temporary license.

🔗 See Also

For more information and additional resources, you may find the following links useful: