مقدمه

فایل‌های PDF در صنایع مختلف ضروری هستند و اطمینان از اصالت و یکپارچگی آن‌ها از طریق امضای دیجیتال یک اقدام امنیتی حیاتی به شمار می‌آید. امضای دیجیتال اعتبار قانونی دارد و اسناد را در برابر دستکاری محافظت می‌کند. این راهنمای جامع شما را در پیاده‌سازی امضای PDF در .NET با ایجاد یک سرویس امن امضای دیجیتال PDF با استفاده از Azure Key Vault و GroupDocs.Signature برای .NET همراهی می‌کند.

امضای الکترونیکی اسناد برای کسب‌وکارهایی که به جریان‌کارهای بدون کاغذ روی می‌آورند، اهمیت فزاینده‌ای پیدا کرده است. GroupDocs.Signature برای .NET یک راه‌حل قدرتمند C# برای امضای دیجیتال PDF ارائه می‌دهد که الزامات انطباق امضای دیجیتال را در چارچوب‌های نظارتی مختلف برآورده می‌کند. چه تازه‌کار باشید که می‌خواهید در برنامه‌های .NET به امضای PDF بپردازید و چه به دنبال ارتقاء پیاده‌سازی موجود خود باشید، این آموزش تمام موارد مورد نیاز شما را پوشش می‌دهد.

Azure Key Vault یک سرویس مدیریت کلید مبتنی بر ابر است که امکان ذخیره‌سازی و مدیریت ایمن کلیدهای رمزنگاری و گواهی‌نامه‌ها را فراهم می‌کند. GroupDocs.Signature برای .NET یک API قدرتمند و ایمن برای امضای PDF است که به توسعه‌دهندگان اجازه می‌دهد به‌صورت برنامه‌نویسی امضای دیجیتال را بر روی فایل‌های PDF اعمال کنند. با یکپارچه‌سازی این دو فناوری می‌توانید یک سرویس امضای دیجیتال PDF قوی و کارآمد بسازید.

یکی از قدرتمندترین ویژگی‌هایی که بررسی خواهیم کرد، امضای هش سفارشی است که انعطاف‌پذیری استثنایی برای جریان کار امضای شما فراهم می‌کند. این رویکرد به شما امکان می‌دهد دستگاه‌های امضای خارجی مانند ماژول‌های امنیتی سخت‌افزاری (HSM)، کارت‌های هوشمند یا هر دستگاه رمزنگاری دیگر را به برنامه خود متصل کنید. با امضای هش سفارشی، توسعه‌دهندگان می‌توانند سرویس‌های امضای خود را بنویسند که با سیستم‌های مالکیتی، زیرساخت‌های قدیمی یا سخت‌افزارهای امنیتی تخصصی ارتباط برقرار کنند و در عین حال با چارچوب GroupDocs.Signature سازگار بمانند. این امر آن را به یک راه‌حل ایده‌آل برای سازمان‌هایی با الزامات امنیتی خاص یا سرمایه‌گذاری موجود در زیرساخت‌های رمزنگاری تبدیل می‌کند.

🔐 ایجاد یک Azure Key Vault و گواهی‌نامه

بیایید با تنظیم یک Azure Key Vault و تولید یک گواهی‌نامه شروع کنیم.

مرحله 1: فراهم‌سازی Key Vault

یک منبع Azure Key Vault جدید را با استفاده از پورتال Azure ایجاد کنید. برای دستورالعمل‌های دقیق، لطفاً این راهنمای سریع شروع را بررسی کنید.

💡اگر اشتراک Azure فعال ندارید، می‌توانید برای یک دوره آزمایشی رایگان یک ماهه ثبت‌نام کنید.

مرحله 2: تولید یا وارد کردن گواهی‌نامه خود

پس از راه‌اندازی Key Vault، به داشبورد آن بروید، برگه 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 کلیک کنید. گواهی‌نامه اکنون به Key Vault شما اضافه می‌شود.

برای مشاهده جزئیات آن، کافی است روی گواهی‌نامه کلیک کنید تا ویژگی‌های آن باز شود.

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 برای امضای PDF در .NET

این راهنمای جامع توضیح می‌دهد چگونه اسناد 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 امکان ذخیره‌سازی و مدیریت ایمن گواهی‌نامه‌ها در زیرساخت‌های امن مایکروسافت را به‌جای ماشین‌های محلی فراهم می‌کند.
  5. سفارشی‌سازی فرآیند امضا: می‌توانید جریان‌های کاری تأیید سفارشی، توالی‌های امضای چندطرفه یا قوانین اعتبارسنجی ویژه‌ای که فراتر از پیاده‌سازی‌های استاندارد امضای دیجیتال هستند، پیاده‌سازی کنید.

گام 1. پیکربندی محیط امضای دیجیتال PDF در C#

ابتدا مسیرهای فایل خود را تعریف کنید و شیء 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...  
    }  
}

📌توضیح:

این گام یک نمونه 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  
};

📌توضیح:

ویژگی‌های پایه امضای دیجیتال مانند ظاهر، موقعیت‌گذاری و هشینگ را پیکربندی کنید تا اطمینان حاصل شود امضای الکترونیکی اسناد شما استانداردهای حرفه‌ای را برآورده می‌کند.

نکته امنیتی: در محیط تولید، از کدنویسی مقادیر حساس (مانند رمزهای عبور) خودداری کنید؛ به‌جای آن از روش‌های پیکربندی ایمن مطابق با الزامات انطباق امضای دیجیتال استفاده کنید.


گام 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)  
    {  
        // 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);  
    }  
}

📌توضیحات:

  • اعتبارنامه‌های Azure:
    متد GetAzureSecretCredential یک اعتبارنامه با استفاده از tenant ID، client ID و secret شما ایجاد می‌کند. نکته امنیتی: اطمینان حاصل کنید این اعتبارنامه‌ها به‌صورت ایمن (مثلاً با استفاده از Azure Key Vault یا یک مخزن پیکربندی امن) ذخیره شوند تا یکپارچگی پیاده‌سازی امضای PDF در .NET شما حفظ شود.
  • امضای با Azure:
    متد SignWithAzure از CryptographyClient SDK Azure برای امضای هش با گواهی‌نامه ذخیره‌شده در 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 ثبت کنید.
    • tenant ID، client ID و client secret خود را دریافت کنید.
    • یک ClientSecretCredential برای دسترسی به Key Vault ایجاد کنید.
  3. دریافت گواهی‌نامه:
    • از CertificateClient برای دریافت گواهی‌نامه شامل کلید عمومی از Azure Key Vault استفاده کنید.
    • این گواهی‌نامه برای تأیید امضای دیجیتال به کار می‌رود.
  4. پیاده‌سازی امضای سفارشی:
    • از CryptographyClient SDK Azure برای امضای هش سند استفاده کنید.
    • الگوریتم امضای مناسب (مثلاً RS256) را مشخص کنید.

📌توضیح:

هر یک از این گام‌ها برای اطمینان از امنیت فرآیند امضا و محافظت از کلیدهای حساس در ابر حیاتی هستند، در حالی که انعطاف‌پذیری لازم برای پیاده‌سازی سرویس‌های امضای سفارشی شما را فراهم می‌کنند.


🧩 گسترش پیاده‌سازی امضای سفارشی شما

زیبایی رویکرد امضای هش سفارشی GroupDocs.Signature این است که می‌توانید آن را برای کار با تقریباً هر دستگاه یا سرویس امضای خارجی تنظیم کنید. در ادامه چند مثال از گسترش این پیاده‌سازی آورده شده است:

  1. ماژول‌های امنیتی سخت‌افزاری (HSMs): یک امضاکننده سفارشی پیاده‌سازی کنید که با HSMهای فیزیکی برای حداکثر امنیت ارتباط برقرار می‌کند.
  2. یکپارچه‌سازی کارت هوشمند: امضاکننده‌ای بسازید که با خواننده‌های کارت هوشمند برای محیط‌های شرکتی که نیاز به احراز هویت فیزیکی دارند، کار می‌کند.
  3. احراز هویت بیومتریک: سرویس امضایی ایجاد کنید که قبل از ایجاد امضا، اثر انگشت یا تشخیص چهره را می‌طلبد.
  4. تأیید چندطرفه: یک جریان کاری امضای سفارشی پیاده‌سازی کنید که قبل از اعمال امضای نهایی، چندین طرف باید تأیید کنند.
  5. ارائه‌دهندگان سرویس ابری: مثال را برای کار با AWS KMS، Google Cloud KMS یا سایر سرویس‌های مدیریت کلید ابری تطبیق دهید.

با پیاده‌سازی سرویس‌های امضای خود از طریق رابط ICustomSignHash، کنترل کامل بر عملیات رمزنگاری خود را حفظ می‌کنید و در عین حال از قابلیت‌های قدرتمند مدیریت اسناد GroupDocs.Signature برای .NET بهره می‌برید.


✨ جمع‌بندی درباره امضای الکترونیکی اسناد

این راهنما نشان داد چگونه GroupDocs.Signature را با Azure Key Vault یکپارچه کنید تا امضای الکترونیکی سازگار برای فایل‌های PDF به‌صورت ایمن ایجاد کنید. امضای الکترونیکی اسنادی که از این روش تولید می‌شوند، استانداردهای صنعتی برای اصالت و یکپارچگی را برآورده می‌کنند. با پیروی از این رویکرد گام‌به‌گام و رعایت بهترین شیوه‌های امنیتی (مانند مدیریت ایمن اعتبارنامه‌ها)، می‌توانید یک راه‌حل امضای دیجیتال قوی در برنامه .NET خود پیاده‌سازی کنید که در تمام جریان کاری اسناد شما کار می‌کند.

برای جزئیات بیشتر و سناریوهای پیشرفته، به مستندات رسمی مراجعه کنید.


دریافت نسخه آزمایشی رایگان

می‌توانید APIهای GroupDocs.Signature را به‌صورت رایگان با دانلود و نصب آخرین نسخه از وب‌سایت صفحه دانلودهای انتشار امتحان کنید.

همچنین می‌توانید یک لایسنس موقت برای تست تمام قابلیت‌های کتابخانه بدون هیچ محدودیتی دریافت کنید. برای درخواست لایسنس موقت به صفحه temporary license page مراجعه کنید.

🔗 همچنین ببینید

برای اطلاعات بیشتر و منابع تکمیلی، ممکن است لینک‌های زیر برای شما مفید باشند: