Wprowadzenie
Pliki PDF są niezbędne w różnych branżach, a zapewnienie ich autentyczności i integralności za pomocą podpisów cyfrowych jest kluczowym środkiem bezpieczeństwa. Podpisy cyfrowe zapewniają ważność prawną i chronią dokumenty przed manipulacją. Ten obszerny przewodnik przeprowadzi Cię przez implementację podpisywania PDF w .NET, tworząc bezpieczną usługę cyfrowego podpisu PDF przy użyciu Azure Key Vault i GroupDocs.Signature for .NET.
Podpisy elektroniczne dokumentów stają się coraz ważniejsze dla firm przechodzących na przepływy pracy bez papieru. GroupDocs.Signature for .NET oferuje potężne rozwiązanie C# do cyfrowego podpisywania PDF, które spełnia wymogi zgodności podpisu cyfrowego w różnych ramach regulacyjnych. Niezależnie od tego, czy dopiero zaczynasz przygodę z podpisywaniem PDF w aplikacjach .NET, czy chcesz ulepszyć istniejącą implementację, ten tutorial zawiera wszystko, co musisz wiedzieć.
Azure Key Vault to oparta na chmurze usługa zarządzania kluczami, umożliwiająca bezpieczne przechowywanie i zarządzanie kluczami kryptograficznymi oraz certyfikatami. GroupDocs.Signature for .NET to potężne, bezpieczne API do podpisywania PDF, które pozwala programistom programowo nakładać podpisy cyfrowe na pliki PDF. Łącząc te technologie, możesz zbudować solidną i wydajną usługę cyfrowego podpisu PDF.
Jedną z najpotężniejszych funkcji, które omówimy, jest własne podpisywanie hash, które zapewnia wyjątkową elastyczność w Twoim procesie podpisywania. To podejście pozwala połączyć zewnętrzne urządzenia podpisujące, takie jak moduły bezpieczeństwa sprzętowego (HSM), karty inteligentne czy inne urządzenia kryptograficzne, z Twoją aplikacją. Dzięki własnemu podpisywaniu hash programiści mogą tworzyć własne usługi podpisujące, które współpracują z systemami własnościowymi, starszą infrastrukturą lub specjalistycznym sprzętem bezpieczeństwa, zachowując jednocześnie kompatybilność z frameworkiem GroupDocs.Signature. Czyni to rozwiązanie idealnym dla organizacji o specyficznych wymaganiach bezpieczeństwa lub już zainwestowanych w infrastrukturę kryptograficzną.
🔐 Utwórz Azure Key Vault i certyfikat
Zacznijmy od skonfigurowania Azure Key Vault i wygenerowania certyfikatu.
Krok 1: Utwórz Key Vault
Utwórz nowy zasób Azure Key Vault przy użyciu Azure portal. Szczegółowe instrukcje znajdziesz w tym quick-start guide.
💡Jeśli nie masz aktywnej subskrypcji Azure, możesz zarejestrować się na 1‑miesięczną darmową wersję próbną, aby rozpocząć.
Krok 2: Wygeneruj lub zaimportuj swój certyfikat
Po uruchomieniu Key Vault przejdź do jego pulpitu, wybierz zakładkę Certificates i kliknij Generate/Import, aby dodać certyfikat.
Krok 3: W polu Method of Certificate Creation wybierz Generate, aby automatycznie utworzyć nowy certyfikat. W tym przykładzie wybieramy Self-signed certificate jako typ urzędu certyfikacji.
Uwaga: Jeśli wolisz użyć istniejącego certyfikatu, możesz wybrać Import, aby wczytać go z lokalnego urządzenia.
Krok 4: Następnie przejdź do Advanced Policy Configuration i ustaw opcję Private Key Export na No.
Krok 5: Na koniec kliknij Create. Certyfikat zostanie dodany do Twojego Key Vault.
Aby zobaczyć jego szczegóły, po prostu kliknij certyfikat, aby otworzyć jego właściwości.
⚙️ Zarejestruj aplikację, aby umożliwić dostęp do Azure Key Vault
Aby Web API mógł uzyskać dostęp do Azure Key Vault, musisz zarejestrować je w Azure Active Directory:
Krok 1: Przejdź do Azure Active Directory, wybierz App registrations i kliknij New registration.
Krok 2: Wprowadź nazwę aplikacji i zarejestruj ją.
Po rejestracji otrzymasz kluczowe informacje — skopiuj Client ID i Tenant ID do użycia w aplikacji.
Krok 3: Następnie wybierz API Permissions z menu bocznego i kliknij Add Permission. Wybierz Azure Key Vault, zaznacz Full Access i zakończ, klikając Add Permissions.
Krok 4: Wybierz Certificate & secrets i kliknij New client secret, aby utworzyć nowy klucz tajny. Skopiuj ten klucz, aby używać go w aplikacji .NET.
🔐 Przypisz politykę dostępu do Azure Key Vault
W poprzednich krokach utworzyliśmy i zarejestrowaliśmy aplikację. Teraz musimy przyznać nowo zarejestrowanej aplikacji dostęp do Azure Key Vault:
Krok 1: Przejdź do Azure Key Vault, wybierz Access Policies i kliknij Create.
Krok 2: Wybierz niezbędne uprawnienia i kliknij Next.
Krok 3: W tym oknie wybierz aplikację, którą zarejestrowaliśmy wcześniej, GroupDocs.Signature.Service, i kliknij Create.
Aplikacja pojawi się teraz w sekcji Access Policies.
📑 Jak używać Azure Key Vault z GroupDocs.Signature for .NET przy podpisywaniu PDF
Ten obszerny przewodnik wyjaśnia, jak podpisywać dokumenty PDF przy użyciu API GroupDocs.Signature w .NET z własnym podpisywaniem hash, które wykorzystuje Azure Key Vault. Podzielimy proces na przejrzyste kroki — od konfiguracji środowiska C# po implementację własnego hash signera spełniającego wymogi zgodności podpisu cyfrowego.
Przegląd bezpiecznego podpisywania PDF z własną implementacją hash
Podejście własnego podpisywania hash oferuje wyjątkową elastyczność przy wdrażaniu elektronicznych podpisów dokumentów w aplikacjach .NET. Oto, co omówimy:
- Konfiguracja aplikacji .NET do pracy z GroupDocs.Signature for PDF digital signatures
- Ustawienie profesjonalnych opcji podpisywania cyfrowego z odpowiednim zarządzaniem certyfikatami
- Implementacja mechanizmu własnego podpisywania hash dla maksymalnej elastyczności
- Integracja Azure Key Vault w celu bezpiecznego pobierania certyfikatu publicznego i podpisywania dokumentu
- Stosowanie najlepszych praktyk bezpieczeństwa podczas całej implementacji
Dodatkowe informacje znajdziesz w dokumentacji GroupDocs.Signature dotyczącej podpisywania cyfrowego z własnym hash.
🚀 Korzyści z własnego podpisywania hash dla aplikacji .NET PDF
Zanim przejdziemy do implementacji, warto zrozumieć, dlaczego własne podpisywanie hash stanowi istotny postęp w technologii podpisów cyfrowych:
- Integracja z zewnętrznymi urządzeniami podpisującymi – własne podpisywanie hash umożliwia płynne połączenie z HSM, kartami inteligentnymi, urządzeniami biometrycznymi i innym specjalistycznym sprzętem kryptograficznym, którego organizacja może już używać.
- Elastyczna architektura dla rozwiązań korporacyjnych – organizacje mogą tworzyć własne usługi podpisujące, które współpracują z istniejącą infrastrukturą, starszymi systemami lub własnościowymi rozwiązaniami, zachowując kompatybilność z GroupDocs.Signature.
- Zwiększona zgodność z wymogami bezpieczeństwa – oddzielenie generowania hash od rzeczywistego procesu podpisywania daje lepszą kontrolę nad operacjami kryptograficznymi, pomagając spełnić surowe regulacje, takie jak eIDAS, ESIGN Act i branżowe standardy.
- Wsparcie dla zarządzania kluczami w chmurze – integracja z Azure Key Vault pozwala przechowywać i zarządzać certyfikatami w certyfikowanej infrastrukturze Microsoft, zamiast na lokalnych maszynach.
- Personalizacja procesu podpisywania – wdrażaj własne przepływy zatwierdzania, sekwencje wielostronnego podpisywania lub specjalistyczne reguły walidacji wykraczające poza standardowe implementacje.
Krok 1. Konfiguracja środowiska C# do cyfrowego podpisywania PDF
Zacznij od określenia ścieżek plików i zainicjowania obiektu GroupDocs.Signature w aplikacji C#. W tym przykładzie podajemy plik PDF źródłowy oraz miejsce docelowe dla podpisanego dokumentu.
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:
Ten krok tworzy nową instancję Signature, która ładuje dokument PDF, który chcesz podpisać, tworząc podstawę dla bezpiecznego podpisywania PDF w Twojej aplikacji .NET.
Krok 2. Konfiguracja opcji podpisu cyfrowego
Następnie ustaw opcje podpisu cyfrowego. Opcje obejmują szczegóły certyfikatu, wygląd wizualny oraz algorytm hash. Własne podpisywanie hash zostanie podłączone później.
// 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:
Skonfiguruj podstawowe właściwości podpisu cyfrowego, takie jak wygląd, pozycjonowanie i algorytm hash, aby Twoje elektroniczne podpisy dokumentów spełniały profesjonalne standardy.
Uwaga dotycząca bezpieczeństwa: w środowisku produkcyjnym unikaj twardego kodowania wrażliwych wartości (np. haseł); zamiast tego używaj bezpiecznych metod konfiguracji zgodnych z wymogami zgodności podpisu cyfrowego.
Krok 3. Implementacja własnego podpisywania hash
Teraz przypisz własny signer do opcji. Ten własny signer implementuje interfejs ICustomSignHash i będzie używany do podpisywania hash przy pomocy Azure Key Vault lub innego zewnętrznego urządzenia podpisującego.
var azureSigner = new AzureSigner();
options.CustomSignHash = azureSigner;
options.Signature.Certificate = azureSigner.GetPublicCertificateFromAzureStorage();
📌Annotation:
Tutaj tworzona jest instancja AzureSigner. Jej metoda CustomSignHash zostanie wywołana w trakcie procesu podpisywania, a także pobiera certyfikat publiczny z Azure Key Vault.
Krok 4. Podpisywanie dokumentu
Na koniec wywołaj metodę Sign, aby wygenerować podpisany dokument PDF przy użyciu własnej implementacji podpisywania hash.
signature.Sign(sampleOutputFilePath, options);
📌Annotation:
Metoda nakłada Twój podpis cyfrowy na dokument, wykorzystując wcześniej skonfigurowane opcje, w tym własny signer hash. Wynikowy PDF będzie zawierał kryptograficznie bezpieczny podpis, który można zweryfikować w standardowych czytnikach PDF lub programowo przy użyciu funkcji walidacji GroupDocs.Signature.
Krok 5. Szczegółowa implementacja podpisywania certyfikatem Azure
Poniżej pełna implementacja własnego signera wykorzystującego Azure Key Vault do podpisywania certyfikatem Azure. Klasa demonstruje profesjonalne praktyki podpisywania certyfikatem Azure, pobierając poświadczenia, pobierając certyfikat publiczny i bezpiecznie podpisując hash dokumentu.
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:
MetodaGetAzureSecretCredentialtworzy poświadczenie przy użyciu identyfikatora najemcy, identyfikatora klienta i sekretu. Uwaga bezpieczeństwa: przechowuj te poświadczenia w bezpieczny sposób (np. w Azure Key Vault lub w bezpiecznym magazynie konfiguracji), aby zachować integralność implementacji .NET PDF signing. - Signing with Azure:
MetodaSignWithAzurewykorzystujeCryptographyClientz Azure SDK do podpisania hash przy użyciu certyfikatu przechowywanego w Azure Key Vault, demonstrując profesjonalne podejście do zarządzania certyfikatami zgodne z najlepszymi praktykami cyfrowego podpisu. - Public Certificate Retrieval:
MetodaGetPublicCertificateFromAzureStoragełączy się z Azure Key Vault i pobiera certyfikat niezbędny do weryfikacji podpisu, zapewniając możliwość prawidłowej walidacji elektronicznych podpisów dokumentów.
Krok 6. Kroki implementacji Azure Key Vault dla cyfrowych podpisów PDF
Aby zintegrować Azure Key Vault z własnymi usługami podpisującymi, wykonaj następujące czynności:
- Utwórz Azure Key Vault:
- Stwórz instancję Azure Key Vault.
- Prześlij swój certyfikat podpisujący do Key Vault.
- Skonfiguruj polityki dostępu dla aplikacji.
- Skonfiguruj poświadczenia Azure:
- Zarejestruj aplikację w Azure Active Directory.
- Pobierz identyfikator najemcy, identyfikator klienta i sekret klienta.
- Utwórz
ClientSecretCredentialdo dostępu do Key Vault.
- Pobierz certyfikat:
- Użyj
CertificateClient, aby pobrać certyfikat zawierający klucz publiczny z Azure Key Vault. - Ten certyfikat służy do weryfikacji podpisu cyfrowego.
- Użyj
- Zaimplementuj własne podpisywanie:
- Skorzystaj z
CryptographyClientz Azure SDK, aby podpisać hash dokumentu. - Określ odpowiedni algorytm podpisu (np. RS256).
- Skorzystaj z
📌Annotation:
Każdy z tych kroków jest kluczowy, aby proces podpisywania był bezpieczny i aby wrażliwe klucze pozostały chronione w chmurze, jednocześnie dając elastyczność w tworzeniu własnych usług podpisujących dla specjalistycznych wymagań.
🧩 Rozszerzanie własnej implementacji podpisywania
Urok podejścia własnego podpisywania hash w GroupDocs.Signature polega na możliwości dostosowania go do praktycznie dowolnego zewnętrznego urządzenia lub usługi podpisującej. Oto kilka przykładów, jak możesz rozbudować tę implementację:
- Moduły bezpieczeństwa sprzętowego (HSM) – zaimplementuj własny signer komunikujący się z fizycznym HSM w celu maksymalnego bezpieczeństwa.
- Integracja kart inteligentnych – stwórz signer współpracujący z czytnikami kart inteligentnych dla środowisk korporacyjnych wymagających fizycznej autoryzacji.
- Uwierzytelnianie biometryczne – zbuduj usługę podpisującą, która wymaga odcisku palca lub rozpoznania twarzy przed autoryzacją podpisu.
- Wielostronne zatwierdzanie – wdroż własny przepływ, w którym kilka stron musi zatwierdzić dokument przed nałożeniem ostatecznego podpisu.
- Dostawcy usług w chmurze – dostosuj przykład do współpracy z AWS KMS, Google Cloud KMS lub innymi usługami zarządzania kluczami w chmurze.
Implementując własne usługi podpisujące poprzez interfejs ICustomSignHash, zachowujesz pełną kontrolę nad operacjami kryptograficznymi, jednocześnie korzystając z potężnych możliwości obsługi dokumentów oferowanych przez GroupDocs.Signature for .NET.
✨ Końcowe przemyślenia na temat elektronicznych podpisów dokumentów
Ten przewodnik pokazał, jak zintegrować GroupDocs.Signature z Azure Key Vault w celu tworzenia zgodnych z przepisami elektronicznych podpisów dokumentów PDF w sposób bezpieczny. Podpisy elektroniczne utworzone w ten sposób spełniają standardy branżowe pod względem autentyczności i integralności. Stosując się do tego krok po kroku oraz przestrzegając najlepszych praktyk bezpieczeństwa (np. bezpiecznego zarządzania poświadczeniami), możesz wdrożyć solidne rozwiązanie cyfrowego podpisywania w aplikacji .NET, które będzie działać w całym Twoim przepływie dokumentów.
Po więcej szczegółów i zaawansowanych scenariuszy zapoznaj się z oficjalną dokumentacją.
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: