ASP.NET Core'da PDF Dijital İmzaları Nasıl Eklenir
ASP.NET Core'da bir PDF'e dijital imza eklemek, belge bütünlüğünü korur, imzalayanın kimliğini doğrular ve dosyanın çoğu yargı alanında yasal olarak savunulabilir olmasını sağlar. IronPDF ile sunucu tarafında sertifika dosyaları kullanarak PDF'leri imzalayabilir, görünür imza resimleri ekleyebilir ve etkileşimli imza form alanlarını yerleştirebilirsiniz - hepsi birkaç satır C# kodu ile.
Kutuphaneyi NuGet'ten yukleyin, .pfx sertifikanizi alin ve uretim hazır belge imzalama is akisini oluşturmak icin asagidaki örnekleri takip edin.
Install-Package IronPdf
dotnet add package IronPdf
Install-Package IronPdf
dotnet add package IronPdf
Ayrıca, Visual Studio içindeki NuGet Paket Yöneticisi üzerinden yükleyebilir veya doğrudan IronPDF ürün sayfasından indirebilirsiniz. Deneme sürümünü başlatın ve taahhüt olmadan tüm imzalama özelliklerini test edin.
PDF Dijital İmza Nedir ve Neden Önemlidir?
Dijital imza, imzalayanın kimliğini belirli bir belge sürümüne bağlayan kriptografik bir mekanizmadır. Basit bir elektronik imzadan - örneğin yazılı bir ad veya taranmış bir resimden - farklıdır, çünkü doğrulanabilir, tahrif edilemez bir mühür oluşturmak için genel anahtar kriptolojisini kullanır.
Birisi bir PDF'yi dijital olarak imzaladığında, imzalama yazılımı belge içeriğinin bir karmasını oluşturur ve bu karmayı imzalayanın özel anahtarıyla şifreler. Ortaya çıkan imza, PDF'e imzalayanın genel sertifikası ile birlikte yerleştirilir. Dijital imzaları destekleyen herhangi bir PDF okuyucu - Adobe Acrobat Reader ve modern tarayıcıların içine yerleştirilen PDF görüntüleyicileri dahil - karma'yı genel anahtarla çözer ve belgeyi yeni oluşturulan bir karma ile karşılaştırır. Eğer karmalar eşleşirse, belge otentiktir ve üzerinde değişiklik yapılmamıştır.
Dijital İmzaların Neden Hukuki Öneme Sahip Olduğu
Çoğu ülkede, dijital olarak imzalanmış belgeler, elle imzalanmış kağıt sözleşmelerle aynı yasal ağırlığı taşır. Avrupa Birliği'ndeki eIDAS regülasyonu ve ESIGN Yasası Amerika Birleşik Devletleri'nde, belirli koşullar karşılandığında elektronik imzaları yasal olarak bağlayıcı olarak tanır. Sertifikaya dayalı dijital imzalar bu gerekliliklerin en güçlü seviyesini karşılar.
Dijital İmzalar ASP.NET Core'da Nerelerdedir
Sunucu tarafı imzalama, bir ASP.NET Core uygulaması içinde belgeleri otomatik olarak işleme sırasında imzalamanıza olanak tanır - hiçbir istemci yazılımı gerekli değildir. Sözleşmeler, faturalar, uyumluluk raporları ve NDAlar oluşturuldukları anda imzalanabilir ve imzalanmış dosya doğrudan kullanıcıya geri döndürülebilir veya bir belge yönetim sisteminde saklanabilir. IronPDF, iş akışını düşük seviye PDF spesifikasyon detaylarına dokunmadan uygulayabilmeniz için HTML'den PDF'e dönüştürme ve kriptografik imzalama dahil olmak üzere tüm hattı yönetir.
IronPDF ASP.NET Core Projeye Nasıl Yüklenir?
Çalışan bir imzalama ortamına en hızlı yol NuGet paketidir. Visual Studio'da Paket Yöneticisi Konsolunu açın ve çalıştırın:
Install-Package IronPdf
dotnet add package IronPdf
Install-Package IronPdf
dotnet add package IronPdf
Alternatif olarak, Cozum Gezgini'nde projeyi sag tiklayin, "NuGet Paketlerini Yonet" secenegini secin, IronPdf arayin ve Yukle'yi tiklayin. Kurulumdan sonra, kontrolcu veya servis sinifinizin en ustune asagidaki using yonergelerini ekleyin:
using IronPdf;
using IronPdf.Signing;
using IronPdf;
using IronPdf.Signing;
Imports IronPdf
Imports IronPdf.Signing
IronPDF, .NET 8 ve .NET 9/10'u hedefler, böylece modern ASP.NET Core projelerine doğrudan uyum sağlar. İlk kurulumun detaylı adım adım anlatımını IronPDF hızlı başlangıç kılavuzunda görün.
ASP.NET Core'da Sertifika Dosyasıyla PDF Nasıl İmzalanır?
En yaygin imzalama yaklasimi .pfx veya .p12 sertifika dosyasini kullanir. Bu dosyalar, ozel anahtari ve genel sertifika zincirini tek bir sifre korumali arsive paketler. Bunlardan birini DigiCert veya GlobalSign gibi guvenilen bir sertifika otoritesinden (CA) edinebilir veya geliştirme ve test icin kendi kendine imzali sertifika oluşturabilirsiniz.
Aşağıdaki örnek, HTML'den bir PDF oluşturur ve sertifikaya dayalı dijital imza uygular:
using IronPdf;
using IronPdf.Signing;
using Microsoft.AspNetCore.Mvc;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapPost("/sign-with-certificate", (IWebHostEnvironment env) =>
{
// Generate a PDF from HTML content
var renderer = new ChromePdfRenderer();
var document = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1><p>Terms and conditions...</p>");
// Locate the PFX certificate on the server
string certPath = Path.Combine(env.ContentRootPath, "Certificates", "certificate.pfx");
// Build the signature object
var signature = new PdfSignature(certPath, "yourPassword")
{
SigningContact = "legal@yourcompany.com",
SigningLocation = "Chicago, IL, USA",
SigningReason = "Document Approval"
};
// Apply the signature and save
document.Sign(signature);
string outputPath = Path.Combine(Path.GetTempPath(), "signed-contract.pdf");
document.SaveAs(outputPath);
return Results.File(outputPath, "application/pdf", "signed-contract.pdf");
});
app.Run();
using IronPdf;
using IronPdf.Signing;
using Microsoft.AspNetCore.Mvc;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapPost("/sign-with-certificate", (IWebHostEnvironment env) =>
{
// Generate a PDF from HTML content
var renderer = new ChromePdfRenderer();
var document = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1><p>Terms and conditions...</p>");
// Locate the PFX certificate on the server
string certPath = Path.Combine(env.ContentRootPath, "Certificates", "certificate.pfx");
// Build the signature object
var signature = new PdfSignature(certPath, "yourPassword")
{
SigningContact = "legal@yourcompany.com",
SigningLocation = "Chicago, IL, USA",
SigningReason = "Document Approval"
};
// Apply the signature and save
document.Sign(signature);
string outputPath = Path.Combine(Path.GetTempPath(), "signed-contract.pdf");
document.SaveAs(outputPath);
return Results.File(outputPath, "application/pdf", "signed-contract.pdf");
});
app.Run();
Imports IronPdf
Imports IronPdf.Signing
Imports Microsoft.AspNetCore.Mvc
Dim builder = WebApplication.CreateBuilder(args)
Dim app = builder.Build()
app.MapPost("/sign-with-certificate", Function(env As IWebHostEnvironment)
' Generate a PDF from HTML content
Dim renderer = New ChromePdfRenderer()
Dim document = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1><p>Terms and conditions...</p>")
' Locate the PFX certificate on the server
Dim certPath As String = Path.Combine(env.ContentRootPath, "Certificates", "certificate.pfx")
' Build the signature object
Dim signature = New PdfSignature(certPath, "yourPassword") With {
.SigningContact = "legal@yourcompany.com",
.SigningLocation = "Chicago, IL, USA",
.SigningReason = "Document Approval"
}
' Apply the signature and save
document.Sign(signature)
Dim outputPath As String = Path.Combine(Path.GetTempPath(), "signed-contract.pdf")
document.SaveAs(outputPath)
Return Results.File(outputPath, "application/pdf", "signed-contract.pdf")
End Function)
app.Run()
ChromePdfRenderer herhangi bir gecerli HTML metnini veya URL'yi PDF'e dönüştürur. PdfSignature yapılandıricisi sertifika yolunu ve sifreyi kabul eder ve istege bagli özellikler (SigningContact, SigningLocation, SigningReason) imza panelinde PDF görüntüleyicileri tarafindan gösterilen metaveriyi ekler. Sign yonetimi kriptografik imzayi gomer ve SaveAs imzalanmis dosyayi diske yazar.
İmzalanmış Dosyayı Bellekten Geri Döndürme
Gecici dosyayi diske yazmak istemediginizde, PDF'i bir MemoryStream kaydedin ve dogrudan kontrolcu eyleminden dondurun:
var stream = new MemoryStream();
document.SaveAs(stream);
stream.Position = 0;
return Results.File(stream, "application/pdf", "signed-contract.pdf");
var stream = new MemoryStream();
document.SaveAs(stream);
stream.Position = 0;
return Results.File(stream, "application/pdf", "signed-contract.pdf");
Dim stream As New MemoryStream()
document.SaveAs(stream)
stream.Position = 0
Return Results.File(stream, "application/pdf", "signed-contract.pdf")
Bu yaklaşım, geçici dosya yönetiminin gereksiz ek yük getireceği yüksek verimli API'ler için uygundur.
Tam bir özellik referansi icin PdfSignature API dokümantasyonuna bakin.
PDF'ye Görünür İmza Görüntüsünü Nasıl Eklersiniz?
Kriptografik imzalar, belge bütünlüğünü korur ancak görüntülenen PDF'de görünmezdir. Birçok iş akışı -- özellikle sözleşmeler veya mektuplar içerenler -- ayrıca sayfaya basılmış olarak taranmış el yazısı imza veya şirket mührü gibi bir görünür temsil gerektirir.
IronPDF bunu LoadSignatureImageFromFile yöntemi ile destekler. Yöntem bir resim yolunu, bir sayfa indeksini ve gorunen imzanin konumunu ve boyutlarini tanimlayan bir IronSoftware.Drawing.Rectangle kabul eder:
using IronPdf;
using IronPdf.Signing;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapPost("/sign-with-visible-image", (IWebHostEnvironment env) =>
{
// Load an existing PDF (for example, an invoice template)
string pdfPath = Path.Combine(env.ContentRootPath, "Documents", "invoice.pdf");
var document = PdfDocument.FromFile(pdfPath);
// Paths to the certificate and the signature image
string certPath = Path.Combine(env.ContentRootPath, "Certificates", "certificate.pfx");
string imagePath = Path.Combine(env.ContentRootPath, "Images", "signature.png");
// Define where the visible signature appears (x, y, width, height in points)
var signatureArea = new Rectangle(50, 680, 200, 80);
var signature = new PdfSignature(certPath, "yourPassword");
signature.LoadSignatureImageFromFile(imagePath, pageIndex: 0, signatureArea);
document.Sign(signature);
string outputPath = Path.Combine(Path.GetTempPath(), "signed-invoice.pdf");
document.SaveAs(outputPath);
return Results.File(outputPath, "application/pdf", "signed-invoice.pdf");
});
app.Run();
using IronPdf;
using IronPdf.Signing;
using IronSoftware.Drawing;
using Microsoft.AspNetCore.Mvc;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapPost("/sign-with-visible-image", (IWebHostEnvironment env) =>
{
// Load an existing PDF (for example, an invoice template)
string pdfPath = Path.Combine(env.ContentRootPath, "Documents", "invoice.pdf");
var document = PdfDocument.FromFile(pdfPath);
// Paths to the certificate and the signature image
string certPath = Path.Combine(env.ContentRootPath, "Certificates", "certificate.pfx");
string imagePath = Path.Combine(env.ContentRootPath, "Images", "signature.png");
// Define where the visible signature appears (x, y, width, height in points)
var signatureArea = new Rectangle(50, 680, 200, 80);
var signature = new PdfSignature(certPath, "yourPassword");
signature.LoadSignatureImageFromFile(imagePath, pageIndex: 0, signatureArea);
document.Sign(signature);
string outputPath = Path.Combine(Path.GetTempPath(), "signed-invoice.pdf");
document.SaveAs(outputPath);
return Results.File(outputPath, "application/pdf", "signed-invoice.pdf");
});
app.Run();
Imports IronPdf
Imports IronPdf.Signing
Imports IronSoftware.Drawing
Imports Microsoft.AspNetCore.Mvc
Dim builder = WebApplication.CreateBuilder(args)
Dim app = builder.Build()
app.MapPost("/sign-with-visible-image", Function(env As IWebHostEnvironment)
' Load an existing PDF (for example, an invoice template)
Dim pdfPath As String = Path.Combine(env.ContentRootPath, "Documents", "invoice.pdf")
Dim document = PdfDocument.FromFile(pdfPath)
' Paths to the certificate and the signature image
Dim certPath As String = Path.Combine(env.ContentRootPath, "Certificates", "certificate.pfx")
Dim imagePath As String = Path.Combine(env.ContentRootPath, "Images", "signature.png")
' Define where the visible signature appears (x, y, width, height in points)
Dim signatureArea As New Rectangle(50, 680, 200, 80)
Dim signature As New PdfSignature(certPath, "yourPassword")
signature.LoadSignatureImageFromFile(imagePath, pageIndex:=0, signatureArea)
document.Sign(signature)
Dim outputPath As String = Path.Combine(Path.GetTempPath(), "signed-invoice.pdf")
document.SaveAs(outputPath)
Return Results.File(outputPath, "application/pdf", "signed-invoice.pdf")
End Function)
app.Run()
Görünür imza görüntüsü, belirttiğiniz koordinatlarda belirtilen sayfanın üzerine birleştirilir. Kriptografik imza, tüm belgeye aynı anda uygulanır, böylece tek bir işlemde hem güvenlik hem de görsel onay elde edersiniz.
Resim bellekte yasiyorsa (örnek olarak bir veri tabani veya bulut depolamadan alinmissa), bunun yerine LoadSignatureImageFromStream kullanin. Görsel imzalama seçeneklerine derinlemesine bir bakış için PDF imzalama nasıl yapılır kılavuzuna bakın.
Dış İmzalayanlar için İmza Form Alanlarını Nasıl Oluşturursunuz?
Bazı iş akışlarında belge, sisteminiz tarafından oluşturulur ancak harici bir taraf -- müşteri, ortak ya da düzenleyici kurum -- tarafından imzalanması gerekir. Bu taraftan önden sertifika toplamak yerine, PDF'ye özel bir imza form alanı eklersiniz ve belgeyi onlara gönderirsiniz. Alıcılar PDF'yi Adobe Acrobat Reader veya başka bir uyumlu görüntüleyici ile açarlar, imza alanına tıklarlar ve kendi sertifikalarını veya elektronik imzalarını uygularlar.
using IronPdf;
using IronPdf.Forms;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/generate-signable-form", (IWebHostEnvironment env) =>
{
// Render the document that requires a client signature
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(@"
<h1>Client Service Agreement</h1>
<p>Please review the terms below and sign in the field provided.</p>
<p>By signing, you confirm acceptance of all listed terms and conditions.</p>
");
// Define the signature field: name, page, x, y, width, height (in points)
var signatureField = new SignatureFormField(
"ClientSignature",
pageIndex: 0,
x: 50,
y: 600,
width: 300,
height: 100
);
pdf.Form.Add(signatureField);
string outputPath = Path.Combine(Path.GetTempPath(), "client-agreement.pdf");
pdf.SaveAs(outputPath);
return Results.File(outputPath, "application/pdf", "client-agreement.pdf");
});
app.Run();
using IronPdf;
using IronPdf.Forms;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/generate-signable-form", (IWebHostEnvironment env) =>
{
// Render the document that requires a client signature
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(@"
<h1>Client Service Agreement</h1>
<p>Please review the terms below and sign in the field provided.</p>
<p>By signing, you confirm acceptance of all listed terms and conditions.</p>
");
// Define the signature field: name, page, x, y, width, height (in points)
var signatureField = new SignatureFormField(
"ClientSignature",
pageIndex: 0,
x: 50,
y: 600,
width: 300,
height: 100
);
pdf.Form.Add(signatureField);
string outputPath = Path.Combine(Path.GetTempPath(), "client-agreement.pdf");
pdf.SaveAs(outputPath);
return Results.File(outputPath, "application/pdf", "client-agreement.pdf");
});
app.Run();
Imports IronPdf
Imports IronPdf.Forms
Imports Microsoft.AspNetCore.Builder
Imports Microsoft.AspNetCore.Hosting
Imports Microsoft.Extensions.Hosting
Dim builder = WebApplication.CreateBuilder(args)
Dim app = builder.Build()
app.MapGet("/generate-signable-form", Function(env As IWebHostEnvironment)
' Render the document that requires a client signature
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("
<h1>Client Service Agreement</h1>
<p>Please review the terms below and sign in the field provided.</p>
<p>By signing, you confirm acceptance of all listed terms and conditions.</p>
")
' Define the signature field: name, page, x, y, width, height (in points)
Dim signatureField = New SignatureFormField(
"ClientSignature",
pageIndex:=0,
x:=50,
y:=600,
width:=300,
height:=100
)
pdf.Form.Add(signatureField)
Dim outputPath As String = Path.Combine(Path.GetTempPath(), "client-agreement.pdf")
pdf.SaveAs(outputPath)
Return Results.File(outputPath, "application/pdf", "client-agreement.pdf")
End Function)
app.Run()
SignatureFormField yapılandırici parametreleri, sayfadaki alani dogrudan haritalar. Alıcı PDF'yi açtığında, imzalarının nereye gitmesi gerektiğini açıkça işaretlenmiş bir kutu görürler. Tamamlanan form, daha sonra sisteminize geri gönderilebilir ve burada yüklenebilir, gömülü imza doğrulanabilir ve arşivlenebilir.
PDF form işleme hakkında daha fazla bilgi için -- gönderilen form verilerinin geri okunması dahil -- PDF form düzenleme kılavuzuna bakın.
Dijital İmza Programlı Olarak Nasıl Doğrulanır?
Bir belge imzalandıktan ve geri gönderildikten sonra, imzanın hala geçerli olduğunu ve belgenin değiştirilmediğini doğrulamanız gerekebilir. IronPDF, imza doğrulamayi PdfDocument nesnesi araciligiyla sunar:
using IronPdf;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/verify-signature", (IWebHostEnvironment env) =>
{
string signedPath = Path.Combine(env.ContentRootPath, "Documents", "signed-contract.pdf");
var document = PdfDocument.FromFile(signedPath);
// Retrieve all embedded signatures
var signatures = document.GetSignatures();
foreach (var sig in signatures)
{
bool isValid = sig.VerifySignature();
string status = isValid
? $"Valid -- signed by {sig.SignerName} on {sig.SigningTime:D}"
: "INVALID -- document may have been tampered with";
Console.WriteLine(status);
}
return Results.Ok(new { SignatureCount = signatures.Count });
});
app.Run();
using IronPdf;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/verify-signature", (IWebHostEnvironment env) =>
{
string signedPath = Path.Combine(env.ContentRootPath, "Documents", "signed-contract.pdf");
var document = PdfDocument.FromFile(signedPath);
// Retrieve all embedded signatures
var signatures = document.GetSignatures();
foreach (var sig in signatures)
{
bool isValid = sig.VerifySignature();
string status = isValid
? $"Valid -- signed by {sig.SignerName} on {sig.SigningTime:D}"
: "INVALID -- document may have been tampered with";
Console.WriteLine(status);
}
return Results.Ok(new { SignatureCount = signatures.Count });
});
app.Run();
Imports IronPdf
Imports Microsoft.AspNetCore.Builder
Imports Microsoft.AspNetCore.Hosting
Imports Microsoft.Extensions.Hosting
Dim builder = WebApplication.CreateBuilder(args)
Dim app = builder.Build()
app.MapGet("/verify-signature", Function(env As IWebHostEnvironment)
Dim signedPath As String = Path.Combine(env.ContentRootPath, "Documents", "signed-contract.pdf")
Dim document = PdfDocument.FromFile(signedPath)
' Retrieve all embedded signatures
Dim signatures = document.GetSignatures()
For Each sig In signatures
Dim isValid As Boolean = sig.VerifySignature()
Dim status As String = If(isValid,
$"Valid -- signed by {sig.SignerName} on {sig.SigningTime:D}",
"INVALID -- document may have been tampered with")
Console.WriteLine(status)
Next
Return Results.Ok(New With {.SignatureCount = signatures.Count})
End Function)
app.Run()
GetSignatures(), PDF'e gomulmus tüm dijital imzalarin bir listesini dondurur. Her PdfDigitalSignature nesnesi VerifySignature(), imzalayanin adi, imzalama zaman damgasi ve sertifika zincirini acar. Bu bilgi, herhangi bir PDF'de bozuk veya süresi dolmuş imzaları işaretleyen bir denetim izi veya belge yönetim paneli oluşturmak için yeterlidir.
Üretimde Sertifika Yönetimi Nasıl Ele Alınır?
Bir .pfx dosyasini dosya sisteminde saklamak geliştirme surecinde calisir ancak uretim icin uygun degildir. Sertifika dosyaları özel anahtarlar içerir ve dosya ele geçirilirse, bu anahtarla imzalanan her belge risk altındadır.
Azure Key Vault Kullanımı
Azure Key Vault, özel anahtarın kasayı asla terk etmeden sertifikaları saklamanızı ve kullanmanızı sağlar. .NET SDK, ortak sertifika bilgisini indiren bir CertificateClient sunar. Özel anahtarı Key Vault içinde tutan gerçek imzalama işlemleri için kriptografik işlemi sunucu tarafında gerçekleştirmek üzere Azure.Security.KeyVault.Keys paketini kullanabilirsiniz.
Ortam Değişkenleri ve Gizli Bilgiler Kullanımı
Küçük projeler için, sertifikayı Base64 kodlu bir dize olarak bir ortam değişkeninde veya ASP.NET Core Secrets Manager'da saklayın ve çalışma zamanında çözün:
string certBase64 = Environment.GetEnvironmentVariable("PDF_SIGNING_CERT")
?? throw new InvalidOperationException("PDF_SIGNING_CERT environment variable is not set.");
byte[] certBytes = Convert.FromBase64String(certBase64);
string certPassword = Environment.GetEnvironmentVariable("PDF_SIGNING_CERT_PASSWORD")
?? throw new InvalidOperationException("PDF_SIGNING_CERT_PASSWORD environment variable is not set.");
var signature = new PdfSignature(certBytes, certPassword);
string certBase64 = Environment.GetEnvironmentVariable("PDF_SIGNING_CERT")
?? throw new InvalidOperationException("PDF_SIGNING_CERT environment variable is not set.");
byte[] certBytes = Convert.FromBase64String(certBase64);
string certPassword = Environment.GetEnvironmentVariable("PDF_SIGNING_CERT_PASSWORD")
?? throw new InvalidOperationException("PDF_SIGNING_CERT_PASSWORD environment variable is not set.");
var signature = new PdfSignature(certBytes, certPassword);
Imports System
Dim certBase64 As String = Environment.GetEnvironmentVariable("PDF_SIGNING_CERT")
If certBase64 Is Nothing Then
Throw New InvalidOperationException("PDF_SIGNING_CERT environment variable is not set.")
End If
Dim certBytes As Byte() = Convert.FromBase64String(certBase64)
Dim certPassword As String = Environment.GetEnvironmentVariable("PDF_SIGNING_CERT_PASSWORD")
If certPassword Is Nothing Then
Throw New InvalidOperationException("PDF_SIGNING_CERT_PASSWORD environment variable is not set.")
End If
Dim signature = New PdfSignature(certBytes, certPassword)
Bu model, kimlik bilgilerini kaynak kontrol dışında tutar ve döndürmeyi doğrudan yapar -- ortam değişkenini güncelleyin ve hizmeti yeniden başlatın.
Birden Fazla PDF'yi Verimli Şekilde Nasıl Toplu İmzalarsınız?
Bir operasyonda onlarca veya yuzlerce belge imzalamaniz gerektiginde -- ornegin, ay sonunda bir fatura partisinin tamamini imzalarken -- sertifikayi bir kez yuklemek ve tüm belgeler boyunca PdfSignature nesnesini yeniden kullanmak ek yukleri azaltir:
using IronPdf;
using IronPdf.Signing;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapPost("/batch-sign", (IWebHostEnvironment env) =>
{
string certPath = Path.Combine(env.ContentRootPath, "Certificates", "certificate.pfx");
var signature = new PdfSignature(certPath, "yourPassword")
{
SigningReason = "Batch Invoice Approval"
};
string[] invoicePaths = Directory.GetFiles(
Path.Combine(env.ContentRootPath, "Invoices"),
"*.pdf"
);
string outputDir = Path.Combine(env.ContentRootPath, "Signed");
Directory.CreateDirectory(outputDir);
foreach (string invoicePath in invoicePaths)
{
var doc = PdfDocument.FromFile(invoicePath);
doc.Sign(signature);
string outputFile = Path.Combine(outputDir, Path.GetFileName(invoicePath));
doc.SaveAs(outputFile);
}
return Results.Ok(new { SignedCount = invoicePaths.Length });
});
app.Run();
using IronPdf;
using IronPdf.Signing;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapPost("/batch-sign", (IWebHostEnvironment env) =>
{
string certPath = Path.Combine(env.ContentRootPath, "Certificates", "certificate.pfx");
var signature = new PdfSignature(certPath, "yourPassword")
{
SigningReason = "Batch Invoice Approval"
};
string[] invoicePaths = Directory.GetFiles(
Path.Combine(env.ContentRootPath, "Invoices"),
"*.pdf"
);
string outputDir = Path.Combine(env.ContentRootPath, "Signed");
Directory.CreateDirectory(outputDir);
foreach (string invoicePath in invoicePaths)
{
var doc = PdfDocument.FromFile(invoicePath);
doc.Sign(signature);
string outputFile = Path.Combine(outputDir, Path.GetFileName(invoicePath));
doc.SaveAs(outputFile);
}
return Results.Ok(new { SignedCount = invoicePaths.Length });
});
app.Run();
Imports IronPdf
Imports IronPdf.Signing
Dim builder = WebApplication.CreateBuilder(args)
Dim app = builder.Build()
app.MapPost("/batch-sign", Function(env As IWebHostEnvironment)
Dim certPath As String = Path.Combine(env.ContentRootPath, "Certificates", "certificate.pfx")
Dim signature As New PdfSignature(certPath, "yourPassword") With {
.SigningReason = "Batch Invoice Approval"
}
Dim invoicePaths As String() = Directory.GetFiles(
Path.Combine(env.ContentRootPath, "Invoices"),
"*.pdf"
)
Dim outputDir As String = Path.Combine(env.ContentRootPath, "Signed")
Directory.CreateDirectory(outputDir)
For Each invoicePath As String In invoicePaths
Dim doc = PdfDocument.FromFile(invoicePath)
doc.Sign(signature)
Dim outputFile As String = Path.Combine(outputDir, Path.GetFileName(invoicePath))
doc.SaveAs(outputFile)
Next
Return Results.Ok(New With {.SignedCount = invoicePaths.Length})
End Function)
app.Run()
Dongu disinda bir kez PdfSignature nesnesini oluşturmak, sertifika dosyasinin sadece bir kez okunup analiz edilmesi anlamina gelir. Her yineleme, bireysel bir PDF'yi yükler, imzalar ve kaydeder. Çok buyuk partiler icin, belgeleri Parallel.ForEach kullanarak paralel işlemede dusunun -- IronPDF'nin imzalama işlemleri, her PdfDocument ornegi tek bir iplikte izole edildiginde iplik guvenlidir.
Yaygın İmzalama Hatalarını Nasıl Giderirsiniz?
"Sertifika bulunamadı" veya "Geçersiz şifre"
Sertifika yolunu File.Exists(certPath) kullanarak PdfSignature'e gondermeden once iki kez kontrol edin. Sertifika şifreleri büyük/küçük harf duyarlıdır ve tam olarak eşleşmelidir. Geliştirme sırasında, basit bir şifre ile kendinden imzalı bir sertifika oluşturmak yaygındır; üretimde, şifreyi bir sır olarak kabul edin ve bir sır yöneticisinden yükleyin.
PDF Görüntüleyici'de "İmza geçersiz"
Adobe Acrobat'ta "geçersiz imza" uyarısı genellikle üç şeyi ifade eder: (1) sertifika, görüntüleyicinin sertifika deposu tarafından güvenilmiyor, (2) belge, imzalandıktan sonra değiştirildi veya (3) imzalama sertifikasının süresi doldu. Üretim kullanımı için, güvenilir bir CA'dan sertifika edinin ve sistem saatinin senkronize olduğundan emin olun. Geliştirme için, Adobe, kendinden imzalı sertifikalara geçici olarak güvenmeyi sağlamak için talimatlar sağlar.
Sign() çağrısının ardından "Belge imzalanmadı"
document.Sign(signature) cagirmak belgeyi imzalamak icin isaretler, ancak imza ancak SaveAs cagirildiginda veya bir akisa kaydedildiginde tamamlanir. Kaydet yöntemini Sign'dan sonra cagiriyor oldugunuzdan emin olun ve cikis dosya yolunun yazilabilir oldugunu dogrulayin.
Tüm API ayrıntıları ve sorun giderme kaynakları için IronPDF dokümantasyon merkezi ve IronPDF nesne referansına göz atın. Desteğe ihtiyaçınız varsa, mühendislik ekibiyle iletişim kurmanızı sağlayan IronPDF destek sayfasına başvurun.
Sıradaki Adımlarınız Neler?
ASP.NET Core'da dijital PDF imzalama, uc temel işlemi anladiktan sonra basit hale gelir: bir sertifikayi yuklemek, Sign cagirmak ve sonucu kaydetmek. IronPDF, kriptografik ağır yükü ele alır, böylece uygulamanızın iş mantığına odaklanabilirsiniz.
Belge iş akışınızı oluşturmaya devam etmek için bu ilgili konuları keşfedin:
- ASP.NET Core'da HTML'den PDF oluşturma -- çoğu imzalama iş akışının temeli
- PDF şifreleri ve izinleri nasıl eklenir -- maksimum güvenlik için imzalama ile şifrelemeyi birleştirin
- PDF'leri nasıl birleştirir ve böleriz -- imzalamadan önce çok belgeli paketler oluşturun
- IronPDF lisanslama seçenekleri -- dağıtımınıza uygun planı seçin
- IronPDF NuGet paketi -- en son sürümü ve değişiklik günlüğünü kontrol edin
ücretsiz IronPDF denemesi ile başlayın ve bir saatten kısa sürede ilk imzalı PDF'nizi çalıştırın. Sorularınız varsa veya uç durumlarla karşılaşırsanız, Iron Software destek ekibi güvenilir ve yasal olarak uygun bir belge imzalama iş akışı oluşturmanıza yardımcı olmak için size yardımcı olmaya hazırdır.
Sıkça Sorulan Sorular
ASP.NET Core'da dijital imza nedir?
ASP.NET Core'da dijital imza, PDF belgelerinin doğruluğunu ve bütünlüğünü doğrulamak için kullanılan dijital bir mühür gibidir. Belgelerin yasal olarak geçerli olduğunu ve değiştirilmediğini garanti eder.
IronPDF kullanarak bir PDF belgesine dijital imza nasıl ekleyebilirim?
IronPDF'u kullanarak bir PDF belgesine dijital imza ekleyebilirsiniz; bunu yaparken bir sertifika dahil edebilir ve belgenin imzalanmasını sağlayabilirsiniz, böylece hem güvenli hem de doğrulanabilir olur.
Dijital imzalar iş belgelerim için neden önemlidir?
Dijital imzalar çok önemlidir çünkü sözleşmeler veya faturalar gibi belgelerin gerçek ve değişmemiş olduğunu doğrular, böylece işletmenizi potansiyel yasal risklerden korur.
IronPDF ile PDF'lerde etkileşimli form alanları oluşturabilir miyim?
Evet, IronPDF, PDF'lerde etkileşimli form alanları oluşturmanıza olanak tanır; bu, kullanıcı etkileşimini artırabilir ve ASP.NET Core uygulamalarında belge süreçlerini hızlandırabilir.
PDF belgelerime görülebilir imzalar eklemek mümkün mü?
Evet, IronPDF ile PDF belgelerinize görülebilir imzalar ekleyebilirsiniz, bu da alıcılara belgenin güvenli bir şekilde imzalandığını ve doğrulandığını açıkça iletir.
PDF'lerdeki dijital imzalar için hangi tür sertifikalar kullanılabilir?
Kendinden imzalı sertifikalar ve güvenilir bir Sertifika Yetkilisi tarafından verilen sertifikalar dahil olmak üzere, PDF'ler için dijital imzalar için çeşitli sertifika türleri kullanabilirsiniz, bu da gereken güvenlik ve güven seviyesine bağlıdır.
IronPDF, PDF belgesinin kurcalanmadığını nasıl sağlar?
IronPDF, belgenin bütünlüğünü ve özgünlüğünü doğrulayan dijital imzalar kullanarak bir PDF belgesinin kurcalanmadığını garanti eder, imzaladıktan sonra değişiklik yapıldığında alıcıları uyarır.
ASP.NET Core uygulamalarında dijital imzalama sürecini otomatikleştirebilir miyim?
Evet, ASP.NET Core uygulamalarında, mevcut iş akışlarına entegrasyon ve toplu işlem yapma imkânı veren IronPDF ile dijital imzalama sürecini otomatikleştirebilirsiniz.




