IronPDF 튜토리얼 PDF 디지털 서명 가이드 Sign PDF Programmatically in C# .NET 10: 디지털 서명 Guide 커티스 차우 업데이트됨:1월 26, 2026 다운로드 IronPDF NuGet 다운로드 DLL 다운로드 윈도우 설치 프로그램 무료 체험 시작하기 LLM용 사본 LLM용 사본 LLM용 마크다운 형식으로 페이지를 복사하세요 ChatGPT에서 열기 ChatGPT에 이 페이지에 대해 문의하세요 제미니에서 열기 제미니에게 이 페이지에 대해 문의하세요 Grok에서 열기 Grok에게 이 페이지에 대해 문의하세요 혼란 속에서 열기 Perplexity에게 이 페이지에 대해 문의하세요 공유하다 페이스북에 공유하기 트위터에 공유하기 LinkedIn에 공유하기 URL 복사 이메일로 기사 보내기 This article was translated from English: Does it need improvement? Translated View the article in English C# .NET 의 디지털 서명은 X.509 인증서 기반 암호화를 사용하여 PDF 문서를 인증하며, 시각적 서명 이미지만으로는 제공할 수 없는 변조 감지, 부인 방지 및 장기적인 유효성을 제공합니다. IronPDF는 .NET 개발자가 PDF를 프로그래밍 방식으로 서명 , 검증 및 보호하는 작업을 간편하게 수행할 수 있도록 지원합니다. 기본적인 인증서 서명 및 시각적 서명 렌더링부터 다자간 승인 워크플로 , 타임스탬프 서버 통합, eIDAS 및 ESIGN 법과 같은 프레임워크를 통한 규정 준수 에 이르기까지 모든 기능을 제공합니다. 요약: 빠른 시작 가이드 이 튜토리얼에서는 C#을 사용하여 단일 서명부터 다자간 승인 체인에 이르기까지 X.509 인증서를 이용해 PDF 문서에 프로그래밍 방식으로 서명, 검증 및 보안을 적용하는 방법을 다룹니다. 이 제품은 계약 관리, 송장 처리 또는 규정 준수 시스템에 문서 서명 기능을 구축하는 .NET 개발자를 위한 것입니다 . 개발할 기능: 인증서 기반 PDF 서명 (.pfx/.p12), 시각적 서명 오버레이, 다자간 순차 워크플로, 서명 검증, 변조 감지 및 권한 기반 문서 잠금 기능. 지원 환경: .NET 10, .NET 8 LTS, .NET 뼈대 4.6.2 이상, .NET Standard 2.0. 이 접근 방식을 사용하는 경우: 타사 서명 포털을 거치지 않고 대규모로 PDF에 프로그램 방식으로 서명 해야 할 때 사용합니다. 기술적으로 중요한 이유: 암호화 서명은 시각적 서명 이미지로는 제공할 수 없는 변조 방지, 부인 방지 및 장기적인 유효성을 제공합니다. 이 튜토리얼의 코드 예제를 따라 하려면, IronPDF를 프로젝트에 설정하는 방법에 대한 빠른 설치 가이드를 참조하세요. 단 몇 줄의 코드로 첫 번째 PDF 서명을 생성하세요: 지금 바로 NuGet을 사용하여 PDF 만들기를 시작하세요. NuGet 패키지 관리자를 사용하여 IronPDF를 설치하세요. PM > Install-Package IronPdf 다음 코드 조각을 복사하여 실행하세요. var signature = new IronPdf.Signing.PdfSignature("certificate.pfx", "password"); IronPdf.PdfDocument.FromFile("document.pdf").Sign(signature).SaveAs("signed.pdf"); 실제 운영 환경에서 테스트할 수 있도록 배포하세요. 지금 바로 무료 체험판을 통해 프로젝트에서 IronPDF를 사용해 보세요. 30일 무료 체험 전체 프로젝트를 다운로드하세요 빠르게 시작하려면 이 튜토리얼의 모든 코드 예제가 포함된 전체 작동 프로젝트를 다운로드하세요 . 다운로드 파일에는 샘플 인증서와 모든 서명 예제가 포함된 완벽하게 구성된 .NET 프로젝트가 포함되어 있어 바로 빌드하고 실행할 수 있습니다. IronPDF를 구매하거나 30일 무료 체험판에 가입한 후, 애플리케이션 시작 부분에 라이선스 키를 입력하세요. IronPdf.License.LicenseKey = "KEY"; IronPdf.License.LicenseKey = "KEY"; $vbLabelText $csharpLabel 지금 바로 무료 체험판을 통해 IronPDF을 프로젝트에서 사용해 보세요. 첫 번째 단계: 무료로 시작하세요 !{--010011000100100101000010010100100100000101010010010110010101111101001110010101010001110100010101010100010111110100100101001110010100110101010001000001010011000100110001001100010111110100001001001100010011110100001101001011--} 목차 요약: 빠른 시작 가이드 간략한 개요 디지털 서명과 시각적 서명의 차이점 디지털 서명과 시각적 서명의 차이점은 무엇인가요? 디지털 서명 인프라 구축 IronPDF는 어떤 인증서 형식을 지원하나요? 디지털 서명을 프로그램 방식으로 적용 Basic Certificate Signing in C# 감사 추적을 위한 서명 메타데이터 구성 타임스탬프 서버 및 서명 유효성 보이지 않는 서명 vs 보이는 서명 시각적 서명 모양 추가 서명 이미지 로드 및 위치 지정 여러 페이지에 걸친 서명 위치 지정 다자간 서명 워크플로 순차적 서명 및 증분 저장 기존 서명 확인 변조된 문서 감지 PDF 서명 관련 규정 준수 주요 규제 체계 규제 대상 산업에 대한 인증 요건 서명 권한 제어 자체 개발 vs. 외부 서비스 구매: 맞춤형 서명 시스템 또는 외부 서비스 내부 계약 체결을 선호하는 요인 호스팅 솔루션이 유리한 시나리오 서명 인프라 요구 사항을 평가하세요 PDF 문서에서 디지털 서명과 시각적 서명의 차이점은 무엇인가요? 사람들은 흔히 "디지털 서명"과 "전자 서명"을 같은 의미로 사용하지만, 문서 보안 측면에서 두 용어는 상당히 다르게 작동합니다. 디지털 서명은 암호화 기술을 사용하여 문서 내용의 해시값을 개인 키로 암호화합니다. 해당 공개 키에 접근할 수 있는 사람은 누구나 서명 이후 문서가 변경되지 않았음을 확인할 수 있습니다. 반면 시각적 서명은 PDF 페이지에 삽입된 이미지일 뿐입니다. 스캔한 손글씨 서명, 회사 로고 또는 스타일화된 텍스트 버전의 이름일 수 있습니다. 시각적 서명은 문서가 사람이 보기에 "서명된" 것처럼 보이게 하는 데 도움이 되지만, 변조에 대한 암호화 보호 기능은 제공하지 않습니다. 실제로 비즈니스 애플리케이션에서는 두 가지 유형이 모두 함께 작동해야 하는 경우가 많습니다. 법적 계약서에는 문서의 무결성을 보장하기 위해 인증서 기반 디지털 서명의 암호화 보호 기능과 수신자가 누가 언제 서명했는지 확인할 수 있도록 보이는 서명 블록이 필요할 수 있습니다. 다음 표는 이러한 서명 유형 간의 주요 차이점을 요약한 것입니다. 특성 디지털 서명 시각적 특징 암호화 보호 PKI 및 X.509 인증서를 사용하여 변조 방지 봉인을 생성합니다. 없음, 이미지는 삭제하거나 교체할 수 있습니다. 부인 금지 서명자는 서명 사실을 부인할 수 없다 기술적 신분 증명을 제공하지 않습니다. 변조 감지 어떤 수정이든 서명을 무효화합니다. 문서가 변조되었는지 여부를 감지할 방법이 없습니다. 법적 지위 ESIGN법 및 eIDAS와 같은 규정에 따라 인정됨 "서명 의사" 요건만 충족할 수 있습니다. 확인 프로그램적으로 또는 PDF 리더에서 유효성을 검사할 수 있습니다. 육안 검사만 필요합니다. 자격증 필요 예, .pfx 또는 .p12 형식의 인증서 파일이 필요합니다. 아니요, 어떤 이미지 파일이든 상관없습니다. 대부분의 비즈니스 사례에서 시각적 표현이 함께 제공되는 디지털 서명은 보안과 사용 편의성 측면에서 가장 강력한 조합을 제공합니다. 암호화 계층은 문서의 무결성을 보장하고, 시각적 계층은 수신자에게 익숙한 서명 환경을 제공합니다. 개발팀은 어떻게 디지털 서명 인프라를 구축할 수 있을까요? 디지털 서명을 구현하려면 두 가지가 필요합니다. 서명을 위한 X.509 인증서와 실제 운영 환경에서 인증서 관리가 어떻게 작동하는지에 대한 지식입니다. 이 섹션에서는 각 구성 요소를 자세히 살펴봅니다. IronPDF는 PDF 서명에 어떤 인증서 형식을 지원합니까? 디지털 서명은 X.509 인증서를 기반으로 하며, 이 인증서에는 공개 키와 개인 키 쌍뿐만 아니라 인증서 소유자에 대한 신원 정보가 포함되어 있습니다. 이러한 자격증은 일반적으로 1년에서 3년 사이의 유효 기간을 갖습니다. IronPDF는 일반적으로 .pfx 또는 .p12 파일로 저장되는 표준 PKCS#12 형식의 인증서를 사용합니다. 이 파일들은 서명에 필요한 개인 키와 검증에 필요한 공개 인증서를 하나의 암호로 보호된 컨테이너에 묶어 놓은 것입니다. 기업 환경에서는 일반적으로 다음 여러 소스 중 하나에서 인증서를 발급받습니다. DigiCert, Sectigo, GlobalSign과 같은 상용 인증 기관은 주요 PDF 리더에서 자동으로 신뢰되는 인증서를 발급합니다. 내부 PKI 인프라를 사용하면 조직에서 자체 인증서를 발급할 수 있지만, 수신자는 발급 CA를 수동으로 신뢰해야 할 수도 있습니다. 자체 서명 인증서는 프로토타입 제작에는 유용하지만, 수동으로 신뢰하지 않으면 PDF 리더에서 경고 메시지가 표시됩니다. IronPDF용 인증서를 로드할 때 X509KeyStorageFlags.Exportable 플래그를 지정해야 합니다. 이를 통해 암호화 하위 시스템은 서명에 필요한 개인 키에 접근할 수 있습니다. 인증서를 올바르게 로드하는 방법은 다음과 같습니다. :path=/static-assets/pdf/content-code-examples/tutorials/pdf-digital-signatures-csharp-guide/load-certificate.cs using System.Security.Cryptography.X509Certificates; // Load the certificate from a PKCS#12 file (.pfx or .p12) // The Exportable flag allows the private key to be used for signing var certificate = new X509Certificate2( "company-signing-cert.pfx", "certificate-password", X509KeyStorageFlags.Exportable ); $vbLabelText $csharpLabel 예시 출력: 인증서가 성공적으로 로드되었습니다. 제목: CN=테스트 서명자, O=테스트 기관, C=미국 발급자: CN=테스트 서명자, O=테스트 기관, C=미국 유효 기간 시작일: 2026년 1월 27일 오전 7시 50분 04초 유효기간: 2027년 1월 27일 오전 8시 00분 03초까지 지문: 41355DE5ADD66CD64B2B99FF2CF87B9C87BD412F 개인 키 보유 여부: 참 실제 운영 환경에서는 인증서 암호를 하드코딩하는 대신 Azure Key Vault, AWS Secrets Manager 또는 HashiCorp Vault와 같은 보안 구성 시스템에서 가져오세요. 인증서 파일은 적절한 접근 제어를 통해 저장하고 버전 관리 시스템에 절대 커밋하지 마십시오. 개발자는 어떻게 PDF 문서에 디지털 서명을 프로그래밍 방식으로 적용할 수 있을까요? IronPDF의 기본 서명 워크플로는 인증서에서 PdfSignature 객체를 생성하고 이를 PDF에 적용하는 것입니다. 이 섹션에서는 서명 프로세스와 메타데이터 추가 및 서명 동작 구성 옵션에 대해 설명합니다. What does Basic Certificate Signing look like in C#? 가장 간단한 서명 시나리오는 기존 PDF 파일을 불러와서 인증서를 이용해 서명을 생성하고, 서명된 결과를 저장하는 것입니다. IronPDF는 모든 암호화 작업을 내부적으로 처리합니다. :path=/static-assets/pdf/content-code-examples/tutorials/pdf-digital-signatures-csharp-guide/basic-signing.cs using IronPdf; using IronPdf.Signing; // Load the PDF document that needs to be signed PdfDocument pdf = PdfDocument.FromFile("contract.pdf"); // Create a signature object using the certificate file path and password var signature = new PdfSignature("certificate.pfx", "password"); // Apply the cryptographic signature to the document // This embeds an invisible digital signature in the PDF structure pdf.Sign(signature); // Save the signed document to a new file pdf.SaveAs("contract-signed.pdf"); $vbLabelText $csharpLabel 입력 contract.pdf - 서명 전 샘플 계약서 산출 이렇게 하면 보이지 않는 디지털 서명이 포함된 PDF 파일이 생성됩니다. 어도비 아크로뱃이나 다른 서명 인식 PDF 리더에서 문서를 열면 서명 유효성 검사 정보가 표시되어 서명이 유효한지, 서명 이후 문서가 수정되었는지 여부를 보여줍니다. 문서를 메모리에 로드하여 다른 변경 작업을 수행할 필요 없이 단순히 서명만 하면 되는 시나리오의 경우, IronPDF는 간소화된 한 줄 명령어를 제공합니다. :path=/static-assets/pdf/content-code-examples/tutorials/pdf-digital-signatures-csharp-guide/one-line-signing.cs using IronPdf; using IronPdf.Signing; // One-line approach for signing PDFs // Useful for batch processing where you don't need to manipulate the document var signature = new PdfSignature("certificate.pfx", "password"); PdfDocument.FromFile("document.pdf").Sign(signature).SaveAs("document-signed.pdf"); $vbLabelText $csharpLabel 이 기능은 다른 변경 사항 없이 많은 문서에 서명하는 일괄 처리 작업에 특히 유용합니다. 감사 추적을 위한 서명 메타데이터는 어떻게 구성해야 합니까? 디지털 서명에는 서명 이벤트에 대한 맥락을 제공하는 메타데이터가 포함될 수 있습니다. 이 정보는 PDF 리더의 서명 패널에 표시되며 문서의 감사 추적 기록에 추가됩니다. IronPDF는 다음과 같은 몇 가지 표준 메타데이터 필드를 지원합니다. :path=/static-assets/pdf/content-code-examples/tutorials/pdf-digital-signatures-csharp-guide/signature-metadata.cs using IronPdf; using IronPdf.Signing; using System; // Load the document to be signed PdfDocument pdf = PdfDocument.FromFile("invoice.pdf"); // Create a signature with the company certificate var signature = new PdfSignature("certificate.pfx", "password") { // Add metadata to create an audit trail // This information appears in the signature panel of PDF readers SigningReason = "Invoice Approval", SigningLocation = "New York Office", SigningContact = "accounts@company.com", SignatureDate = DateTime.UtcNow }; // Apply the signature with all metadata included pdf.Sign(signature); pdf.SaveAs("invoice-approved.pdf"); $vbLabelText $csharpLabel 입력 청구서.pdf - 서명 전 청구서 산출 메타데이터 필드는 문서 워크플로에서 서로 다른 목적을 수행합니다. 메타데이터 필드 목적 예시 값 서명 사유 문서에 서명한 이유를 설명합니다. "계약 승인", "감사 인증" 서명 장소 서명이 이루어진 기록 "뉴욕 사무실", "재택근무" 서명 연락처 문의 사항에 대한 연락처 정보를 제공합니다. "legal@company.com", "+1 555 0123" 서명 날짜 서명 행사의 타임스탬프 `DateTime.UtcNow` 기업 환경에서 이러한 필드는 종종 운영 데이터와 연관됩니다. 송장 승인 시스템은 서명 사유를 구매 주문 번호로 설정할 수 있으며, 계약 관리 시스템은 계약 ID와 승인 단계를 포함할 수 있습니다. 타임스탬프 서버는 시간이 지남에 따라 서명 유효성을 유지하는 데 어떤 역할을 합니까? 디지털 서명에는 문서에 서명한 시간을 나타내는 타임스탬프가 포함되지만, 이 타임스탬프는 서명한 컴퓨터의 로컬 시계를 기준으로 합니다. 수년 후 서명 검증이 필요할 수 있거나 정확한 서명 시간을 법적으로 입증해야 하는 경우, 외부 타임스탬핑 기관(TSA)의 신뢰할 수 있는 타임스탬프는 훨씬 강력한 증거를 제공합니다. 타임스탬프 서버는 문서가 특정 시점에 현재 형태로 존재했음을 암호화 방식으로 증명합니다. 서명 인증서가 나중에 만료되거나 취소되더라도 타임스탬프를 통해 서명이 적용된 시점에는 유효했음을 알 수 있습니다. IronPDF는 RFC 3161 타임스탬프 서버를 지원합니다. :path=/static-assets/pdf/content-code-examples/tutorials/pdf-digital-signatures-csharp-guide/timestamp-server.cs using IronPdf; using IronPdf.Signing; using System; // Load the document to sign PdfDocument pdf = PdfDocument.FromFile("agreement.pdf"); var signature = new PdfSignature("certificate.pfx", "password") { SigningReason = "Agreement Execution", // Configure a trusted timestamp server (RFC 3161 compliant) // This provides cryptographic proof of when the document was signed TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256, TimeStampUrl = "http://timestamp.digicert.com" }; // Apply the signature with the trusted timestamp pdf.Sign(signature); pdf.SaveAs("agreement-timestamped.pdf"); $vbLabelText $csharpLabel 입력 agreement.pdf - 서명 전 서비스 계약서 산출 여러 공용 타임스탬프 서버가 일반적인 용도로 제공되고 있으며, 주요 인증 기관에서 운영하는 서버도 포함됩니다. 규모가 큰 조직은 회사 보안 정책을 준수하는 자체 내부 타임스탬프 서버를 운영할 수도 있습니다. 해시 알고리즘의 선택은 장기적인 유효성에 영향을 미칩니다. SHA 256이 현재 표준이지만, IronPDF는 더욱 엄격한 보안 요구 사항을 충족하기 위해 SHA 512도 지원합니다. SHA 1과 같은 오래된 알고리즘은 더 이상 암호학적으로 안전하다고 간주되지 않으므로 사용을 피해야 합니다. 문서에 서명을 숨길지, 아니면 보이게 할지는 어떤 경우에 해당될까요? 디지털 서명은 두 가지 모드로 적용할 수 있습니다. 하나는 PDF의 암호화 구조에만 존재하는 보이지 않는 서명이고, 다른 하나는 지정된 페이지에 그래픽 표현으로 표시되는 보이는 서명입니다. 어떤 방식을 선택할지는 문서의 목적과 수신자의 기대에 따라 달라집니다. 보이지 않는 서명은 사람의 검토가 필요하지 않은 자동 문서 처리, 기존 문서 레이아웃을 변경해서는 안 되는 상황, 그리고 서명이 여러 개 필요한 워크플로에서 서명이 보이면 문서가 복잡해지는 경우에 적합합니다. 서명이 보이도록 하는 서명은 수신자가 서명의 시각적 증거를 기대하는 경우, 특정 위치에 서명해야 하는 업무 흐름이 있는 경우, 또는 문서가 인쇄되어 서명이 용지에 나타나야 하는 경우에 선호됩니다. 다음 섹션에서는 시각적 서명 구현에 대해 자세히 다룹니다. 디지털 서명된 PDF에 시각적 서명 모양을 추가하는 방법은 무엇입니까? 많은 비즈니스 프로세스는 서명란을 중심으로 발전해 왔으며, 수신자는 문서에 서명된 위치와 시간을 확인할 수 있기를 기대합니다. IronPDF를 사용하면 암호화 보호 기능을 적용하는 동시에 페이지에 서명을 표시할 수 있어 두 가지 장점을 모두 누릴 수 있습니다. 서명 이미지를 어떻게 불러와서 배치할 수 있나요? 시각적 서명은 일반적으로 PDF 페이지의 특정 위치에 배치된 이미지(예: 스캔한 손글씨 서명, 회사 직인 또는 스타일이 적용된 텍스트 블록)입니다. IronPDF의 LoadSignatureImageFromFile 메서드는 위치 지정 및 렌더링을 처리합니다. :path=/static-assets/pdf/content-code-examples/tutorials/pdf-digital-signatures-csharp-guide/visual-signature.cs using IronPdf; using IronPdf.Signing; using IronSoftware.Drawing; // Load the document to sign PdfDocument pdf = PdfDocument.FromFile("contract.pdf"); var signature = new PdfSignature("certificate.pfx", "password") { SigningReason = "Contract Approval", SigningLocation = "Head Office" }; // Define the position and size for the visible signature image // Rectangle parameters: x position, y position, width, height (in points) // Points are measured from the bottom-left corner of the page var signatureArea = new Rectangle(150, 100, 200, 50); // Load and attach the visual signature image // The image will appear at the specified location on the document signature.LoadSignatureImageFromFile( "signature-image.png", // Path to the signature image file 0, // Page index (0 = first page) signatureArea // Position and dimensions ); // Apply both the cryptographic signature and visual representation pdf.Sign(signature); pdf.SaveAs("contract-visually-signed.pdf"); $vbLabelText $csharpLabel 산출 좌표계는 페이지의 왼쪽 아래 모서리에서 측정한 점(1/72인치)을 사용합니다. 표준 미국 레터 용지(612 x 792 포인트)에 서명을 오른쪽 하단 부근에 배치하려면 서명 크기와 적절한 여백을 모두 고려해야 합니다. 서명 이미지를 다양한 소스에서 불러오는 대체 방법이 있습니다. :path=/static-assets/pdf/content-code-examples/tutorials/pdf-digital-signatures-csharp-guide/load-signature-image.cs using IronPdf.Signing; using IronSoftware.Drawing; using System.IO; // Create signature object var signature = new PdfSignature("certificate.pfx", "password"); var signatureArea = new Rectangle(400, 50, 150, 75); // Method 1: Load signature image directly from a file path signature.LoadSignatureImageFromFile("signature.png", 0, signatureArea); // Method 2: Load from a stream (useful for database-stored images) using (FileStream imageStream = File.OpenRead("signature.png")) { signature.LoadSignatureImageFromStream(imageStream, 0, signatureArea); } // Method 3: Load from AnyBitmap (IronSoftware's cross-platform image type) AnyBitmap signatureBitmap = AnyBitmap.FromFile("signature.png"); using (var stream = signatureBitmap.ToStream()) { signature.LoadSignatureImageFromStream(stream, 0, signatureArea); } $vbLabelText $csharpLabel 지원되는 이미지 형식은 PNG, JPEG, GIF, BMP, TIFF 및 WebP입니다. 투명 배경을 지원하는 PNG 파일은 문서 내용이 그대로 드러나기 때문에 서명 이미지에 적합합니다. 여러 페이지에 걸쳐 서명 위치는 어떻게 지정되나요? 여러 페이지로 구성된 문서에 서명할 때, 디지털 서명은 페이지 수와 관계없이 문서 전체를 보호합니다. 하나의 암호화 서명으로 PDF의 모든 페이지를 보호합니다. :path=/static-assets/pdf/content-code-examples/tutorials/pdf-digital-signatures-csharp-guide/multi-page-signing.cs using IronPdf; using IronPdf.Signing; // Load a multi-page document PdfDocument pdf = PdfDocument.FromFile("multi-page-contract.pdf"); // Create signature - digital signatures protect the entire document // regardless of page count var signature = new PdfSignature("certificate.pfx", "password"); // Sign and save the document // The signature applies to all pages in the document pdf.Sign(signature); pdf.SaveAs("contract-signed-last-page.pdf"); $vbLabelText $csharpLabel 입력 계약서 (마지막 페이지) - 서명 전 서명 페이지 산출 여러 페이지에 걸친 서명(예: 법적 계약서 각 페이지에 이니셜)의 경우, 개발자는 암호화 서명과 별도로 이미지 스탬프를 적용할 수 있습니다. :path=/static-assets/pdf/content-code-examples/tutorials/pdf-digital-signatures-csharp-guide/initials-stamp.cs using IronPdf; using IronPdf.Editing; using IronPdf.Signing; using IronSoftware.Drawing; // Load the document PdfDocument pdf = PdfDocument.FromFile("agreement.pdf"); // Create an image stamp for initials that will appear on every page var initialsStamp = new ImageStamper("initials.png") { HorizontalAlignment = HorizontalAlignment.Right, VerticalAlignment = VerticalAlignment.Bottom, HorizontalOffset = new Length(50, MeasurementUnit.Points), VerticalOffset = new Length(50, MeasurementUnit.Points) }; // Apply initials stamp to all pages pdf.ApplyStamp(initialsStamp); // Now apply the cryptographic signature with a full signature image on the last page var signature = new PdfSignature("certificate.pfx", "password"); var signatureArea = new Rectangle(100, 100, 200, 100); signature.SignatureImage = new PdfSignatureImage( "full-signature.png", pdf.PageCount - 1, // Last page only signatureArea ); // Sign the entire document cryptographically pdf.Sign(signature); pdf.SaveAs("agreement-initialed-and-signed.pdf"); $vbLabelText $csharpLabel 이 접근 방식은 시각적 요소(여러 페이지에 나타날 수 있음)와 암호화 서명(문서 전체를 보호함)을 분리합니다. 기업용 애플리케이션에서 다자간 서명 워크플로는 어떻게 작동합니까? 복잡한 비즈니스 프로세스는 종종 특정 순서에 따라 여러 사람의 서명이 필요합니다. 구매 주문서는 부서 관리자의 승인, 재무 검토, 그리고 최종 경영진의 승인을 거쳐야 할 수도 있습니다. IronPDF는 증분 저장 및 서명 권한 기능을 통해 이러한 워크플로를 지원합니다. 순차 서명이란 무엇이며, 증분 저장은 어떻게 이를 가능하게 합니까? PDF 문서는 버전 관리와 유사하게 여러 수정본을 내부에 저장할 수 있습니다. 누군가가 서명할 때마다, 그 서명은 그 순간의 문서 상태에 적용됩니다. 추후 서명자들이 새로운 수정본에 서명을 추가하면서 각 서명을 독립적으로 검증할 수 있는 승인 절차가 만들어집니다. :path=/static-assets/pdf/content-code-examples/tutorials/pdf-digital-signatures-csharp-guide/sequential-signing-first.cs using IronPdf; using IronPdf.Signing; // Load the purchase order document PdfDocument pdf = PdfDocument.FromFile("purchase-order.pdf"); // First signer: Department Manager approves the purchase order var managerSignature = new PdfSignature("certificate.pfx", "password") { SigningReason = "Manager Approval", SigningLocation = "Department A" }; // Sign the document and save // This preserves the original state while adding the signature pdf.Sign(managerSignature); pdf.SaveAs("po-manager-approved.pdf"); $vbLabelText $csharpLabel 입력 purchase-order.pdf - 승인 대기 중인 구매 주문서 산출 문서가 다음 승인자에게 넘어가면, 승인자는 문서를 업로드하고 자신의 서명을 추가합니다. :path=/static-assets/pdf/content-code-examples/tutorials/pdf-digital-signatures-csharp-guide/sequential-signing-second.cs using IronPdf; using IronPdf.Signing; // Load the document that already has the manager's signature PdfDocument pdf = PdfDocument.FromFile("po-manager-approved.pdf"); // Second signer: Finance department verifies budget availability var financeSignature = new PdfSignature("certificate.pfx", "password") { SigningReason = "Finance Approval", SigningLocation = "Finance Department" }; // Add the second signature // Both signatures remain independently verifiable pdf.Sign(financeSignature); pdf.SaveAs("po-finance-approved.pdf"); $vbLabelText $csharpLabel 산출 각 수정본은 고유한 서명을 유지하며, PDF 리더는 누가 언제 서명했는지에 대한 전체 기록을 표시할 수 있습니다. 새 서명을 추가하기 전에 기존 서명을 어떻게 확인할 수 있습니까? 문서에 새 서명을 추가하기 전에 기존 서명이 여전히 유효한지 확인하는 코드를 작성해야 합니다. 적절한 워크플로를 벗어나 수정된 문서에는 유효하지 않은 서명이 포함될 수 있으며, 이는 문서 변조 또는 프로세스 위반을 나타낼 수 있습니다. :path=/static-assets/pdf/content-code-examples/tutorials/pdf-digital-signatures-csharp-guide/verify-signatures.cs using IronPdf; using System; // Load a signed document PdfDocument pdf = PdfDocument.FromFile("contract-signed.pdf"); // Verify all existing signatures in the document // Returns true only if ALL signatures are valid and untampered bool isValid = pdf.VerifyPdfSignatures(); Console.WriteLine($"Signatures Valid: {isValid}"); // Get signature details var signatures = pdf.GetVerifiedSignatures(); Console.WriteLine($"Number of Signatures: {signatures.Count}"); $vbLabelText $csharpLabel 보다 자세한 검사를 위해 검증된 각 서명에 대한 정보를 확인할 수 있습니다. :path=/static-assets/pdf/content-code-examples/tutorials/pdf-digital-signatures-csharp-guide/get-verified-signatures.cs using IronPdf; using System; // Load a document with multiple signatures PdfDocument pdf = PdfDocument.FromFile("multi-signed-document.pdf"); // Retrieve detailed information about each verified signature var verifiedSignatures = pdf.GetVerifiedSignatures(); // Iterate through all signatures to build an audit trail foreach (var sig in verifiedSignatures) { Console.WriteLine($"Signer: {sig.SignerName}"); Console.WriteLine($"Reason: {sig.SigningReason}"); Console.WriteLine($"Location: {sig.SigningLocation}"); Console.WriteLine($"Date: {sig.SigningDate}"); Console.WriteLine($"Contact: {sig.SigningContact}"); Console.WriteLine("---"); } $vbLabelText $csharpLabel 이 정보를 통해 감사 추적을 구축하고, 승인 절차를 검증하고, 다음 단계로 넘어가기 전에 문서에 필요한 모든 서명이 있는지 확인할 수 있습니다. IronPDF는 어떻게 변조된 문서를 감지합니까? VerifyPdfSignatures() 메서드는 문서의 서명 중 하나라도 유효하지 않으면 false를 반환합니다. 이는 일반적으로 문서 서명 후 내용이 수정되었거나, 서명 데이터 자체가 손상되었거나, 인증서가 취소되었거나, 사용 당시 인증서가 유효하지 않았던 경우에 발생합니다. :path=/static-assets/pdf/content-code-examples/tutorials/pdf-digital-signatures-csharp-guide/detect-tampering.cs using IronPdf; using System; // Load a signed document and verify PdfDocument pdf = PdfDocument.FromFile("contract-signed.pdf"); // Check if all signatures are still valid bool isValid = pdf.VerifyPdfSignatures(); if (isValid) { Console.WriteLine("Document has not been tampered with"); Console.WriteLine("All signatures are valid"); } else { Console.WriteLine("WARNING: Document may have been tampered with!"); Console.WriteLine("One or more signatures are invalid"); } $vbLabelText $csharpLabel 서명 제거가 필요한 애플리케이션(예: 재배포를 위해 서명되지 않은 사본을 생성하기 위한 경우)의 경우 IronPDF는 RemoveSignatures() 메서드를 제공합니다. :path=/static-assets/pdf/content-code-examples/tutorials/pdf-digital-signatures-csharp-guide/remove-signatures.cs using IronPdf; // Load a signed document PdfDocument pdf = PdfDocument.FromFile("signed-template.pdf"); // Remove all digital signatures from the document // This strips signature data but does not restore previous document state pdf.RemoveSignatures(); // Save as an unsigned version pdf.SaveAs("unsigned-template.pdf"); $vbLabelText $csharpLabel 서명을 삭제해도 이전 문서 상태는 복구되지 않는다는 점에 유의하십시오. 이 방법은 현재 문서 버전에서 서명 데이터를 제거하는 간단한 작업입니다. PDF 서명에 대한 규정 준수를 지원하는 기술적 기능은 무엇입니까? 디지털 서명 규정은 관할 지역 및 산업 분야에 따라 다르지만, 인증서 유효성 검사, 타임스탬핑 및 서명 메타데이터와 관련하여 공통적인 기술적 요구 사항을 공유합니다. 구체적인 법적 의무 사항을 해석하려는 시도(이는 자격을 갖춘 법률 전문가와 상의해야 함) 대신, 이 섹션에서는 규정 준수 프레임워크가 일반적으로 요구하는 기술적 역량에 중점을 둡니다. 디지털 서명에 대한 주요 규제 체계는 무엇입니까? 다음 표는 일반적인 규제 체계와 그에 따른 일반적인 기술 요구 사항을 요약한 것입니다. 뼈대 관할권 주요 기술 요구 사항 ESIGN 법안 미국 서명 의사, 전자 기록 동의, 기록 보존 우에타 미국 주 ESIGN과 유사하게, 주 내 거래에 적용됩니다. eIDAS 유럽 연합 서명 수준은 세 가지(단순, 고급, 자격)로 나뉘며, 자격을 갖추려면 QSCD가 필요합니다. 21 CFR 파트 11 미국 식품의약국(FDA) 전자서명은 전자기록과 연동되어야 하며, 감사 추적 기능이 필수적입니다. 이러한 프레임워크는 일반적으로 적절하게 구현될 경우 디지털 서명을 자필 서명과 법적으로 동일한 것으로 인정합니다. 디지털 서명의 증거 가치는 서명이 적용된 시점에 유효했음을 입증하는 데 달려 있는 경우가 많으며, 바로 이 때문에 수년 또는 수십 년 동안 문서를 보존하려면 신뢰할 수 있는 타임스탬프가 필수적입니다. :path=/static-assets/pdf/content-code-examples/tutorials/pdf-digital-signatures-csharp-guide/compliance-signing.cs using IronPdf; using IronPdf.Signing; using System; // Load the compliance document PdfDocument pdf = PdfDocument.FromFile("compliance-document.pdf"); var signature = new PdfSignature("certificate.pfx", "password") { // Add comprehensive metadata for audit trail requirements SigningReason = "21 CFR Part 11 Compliance Certification", SigningLocation = "Quality Assurance Department", SigningContact = "compliance@company.com", SignatureDate = DateTime.UtcNow, // Configure a trusted timestamp for regulatory compliance // The timestamp proves when the signature was applied TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256, TimeStampUrl = "http://timestamp.digicert.com" }; // Apply the signature with timestamp and full metadata pdf.Sign(signature); pdf.SaveAs("compliance-document-certified.pdf"); $vbLabelText $csharpLabel 입력 compliance-document.pdf - 인증을 기다리는 규정 준수 문서 산출 규제 대상 산업에 적용되는 인증 요건은 무엇입니까? 규제 환경에 따라 서명에 사용되는 인증서에 대한 기준이 다를 수 있습니다. 이러한 기준에는 공인 기관의 발급, 최소 키 길이(일반적으로 2048비트 RSA 또는 이에 상응하는 값), 특정 확장 키 사용 속성 또는 HSM이나 스마트 카드 솔루션을 사용한 하드웨어 기반 키 저장 등이 포함될 수 있습니다. IronPDF는 표준 형식 사양을 충족하는 모든 X.509 인증서와 호환되므로 원하는 인증 기관에서 발급한 인증서를 사용할 수 있습니다. 하드웨어로 보호되는 키가 필요한 환경의 경우, IronPDF는 HsmSigner 기능을 통해 PKCS#11 기반 HSM 통합을 지원합니다. 규제 산업에 종사하는 사람들은 법무 및 준법감시 부서와 협력하여 필요한 사항을 명확히 파악한 후, 그에 맞는 서명 인프라를 구축해야 합니다. 서명 권한 제어는 문서 수명 주기 관리를 어떻게 지원합니까? 서명 후에도 특정 목적(예: 추가 서명자가 서명할 수 있도록 하거나 양식 필드를 채울 수 있도록 하는 것)을 위해 문서를 편집할 수 있도록 유지해야 하는 경우가 있습니다. IronPDF의 SignaturePermissions 열거형은 서명 후 허용되는 변경 사항을 제어합니다. :path=/static-assets/pdf/content-code-examples/tutorials/pdf-digital-signatures-csharp-guide/signature-permissions.cs using IronPdf; using IronPdf.Signing; // Load a form document that needs signing PdfDocument pdf = PdfDocument.FromFile("approval-form.pdf"); // Sign with specific permissions for document lifecycle management // AdditionalSignaturesAndFormFillingAllowed permits form completion and additional signatures after signing pdf.SignWithFile( "approver-cert.pfx", "password", null, SignaturePermissions.AdditionalSignaturesAndFormFillingAllowed ); // Save the signed document with form-filling permissions enabled pdf.SaveAs("approval-form-signed.pdf"); $vbLabelText $csharpLabel 사용 가능한 권한 수준은 다음과 같습니다. 권한 수준 서명 후 허용되는 변경 사항 `NoChangesAllowed` 문서가 완전히 잠겨 있습니다. `FormFillingAllowed` 양식 필드만 입력할 수 있으며, 내용은 변경할 수 없습니다. `AdditionalSignaturesAndFormFillingAllowed` 양식 작성 및 추가 서명 허용 `FormFillingAndAnnotationsAllowed` 양식 작성 및 주석 허용 적절한 권한 수준은 문서의 역할에 따라 다릅니다. 완료된 계약서에는 NoChangesAllowed가 사용될 수 있으며, 아직 진행 중인 승인 양식에는 AdditionalSignaturesAndFormFillingAllowed가 사용되어 양식 작성 및 다른 승인자의 추가 서명을 허용할 수 있습니다. 사용자 지정 서명 기능을 구축하는 것이 외부 서비스를 사용하는 것보다 더 나은 경우는 언제일까요? 문서 서명 기능을 구현하는 사람은 누구나 근본적인 아키텍처 결정에 직면하게 됩니다. 자체 애플리케이션에 서명 기능을 구축할 것인지, 아니면 호스팅된 서명 서비스를 사용할 것인지 결정해야 합니다. 두 접근 방식 모두 나름의 장점이 있으며, 어떤 방식을 선택할지는 물량, 맞춤화 요구 사항, 규정 준수 고려 사항 및 총 소유 비용에 따라 달라집니다. 내부 서명 기능 구축에 유리한 요인은 무엇입니까? 다음은 애플리케이션에 직접 서명 기능을 구축하는 것이 유용한 몇 가지 시나리오입니다. 문서량이 많을수록 대규모 거래 시 건당 가격 책정 비용이 높아집니다. 매달 수천 건의 문서를 처리하는 기업들은 서명당 API 사용료를 지불하는 것보다 IronPDF와 같은 영구 라이선스 라이브러리를 사용하는 것이 재정적으로 더 유리하다는 것을 알게 되는 경우가 많습니다. 일회성 라이선스 투자 비용은 지속적인 거래 비용에 비해 훨씬 빠르게 투자금을 회수할 수 있습니다. 외부 서명 서비스가 고유한 패러다임을 가지고 있을 경우, 특별한 프로세스 요구사항이 발생합니다. 일반적인 승인 절차가 특이하거나, 특수 문서 처리가 필요하거나, 표준 서비스에 적합하지 않은 통합 요구 사항이 있는 팀은 서비스의 한계에 적응하려고 노력하는 것보다 자체 솔루션을 구축하는 것이 더 쉽다고 생각하는 경우가 많습니다. 데이터 주권 및 보안 정책으로 인해 일부 기업은 규정, 보안 정책 또는 계약상 의무 때문에 외부 서비스로 문서를 전송할 수 없습니다. 서명 절차를 내부에서 진행하면 문서가 회사 경계 내에 안전하게 보관됩니다. 오프라인 또는 네트워크 연결이 차단된 환경에서는 네트워크 연결이 필요한 호스팅 솔루션을 사용할 수 없습니다. 인터넷 연결이 끊긴 환경(현장 서비스 앱, 기밀 시스템 또는 인터넷 연결이 불안정한 장소)에서 작동해야 하는 애플리케이션에는 로컬에서 구현된 서명 기능이 필요합니다. 구독 기반 가격 책정은 지속적인 비용 지출을 발생시키기 때문에 비용 예측 가능성이 중요합니다. 영구 라이브러리 라이선스는 재무 부서에서 사용량 변동이나 가격 인상에 대한 걱정 없이 계획을 세울 수 있도록 안정적인 비용을 제공합니다. 호스팅 서명 솔루션이 유리한 시나리오는 무엇입니까? 호스팅 솔루션은 다양한 상황에서 효과적으로 작동합니다. 서명 당사자가 다양하고 서명 건수가 적은 경우 는 회사 외부의 자격증이 없는 사람들의 서명이 필요한 문서의 경우입니다. 신원 확인 및 인증서 발급을 처리하는 서비스는 불편함을 줄여줍니다. 가끔씩 사용할 목적으로 내부적으로 그러한 인프라를 구축하는 것은 거의 비용 대비 효과가 없습니다. 개발 리소스 없이 처음부터 구축해야 하는 상황에서는 신속한 배포가 중요합니다. 이러한 플랫폼은 즉시 사용 가능한 사용자 인터페이스와 이메일 알림 기능을 제공하여 바로 활용할 수 있도록 설계되었습니다. 벤더가 특정 규제 체계에 특화되어 있고, 자체적으로 획득하기에는 비용이 많이 드는 인증이나 증명서를 제공할 수 있을 때 규정 준수 위임은 가치가 있습니다. 서명 작업이 투자할 가치가 있는 핵심 역량인지, 아니면 전문가에게 맡기는 것이 더 나은 일반적인 기능인지에 따라 결정되는 경우가 많습니다. 법률 회사, 금융 기관, 의료 기관, 정부 기관과 같이 문서 처리가 업무의 핵심인 기업은 자체 서명 인프라를 보유함으로써 더 나은 수익을 얻는 경우가 많습니다. 문서 서명이 부차적인 사항인 경우, 아웃소싱 옵션의 간편함을 선호할 수 있습니다. 개발팀은 서명 인프라 요구 사항을 어떻게 평가할 수 있을까요? 두 가지 접근 방식 중 하나를 선택하기 전에 다음 요소를 고려하십시오. 현재 및 예상 판매량이 비용 분석의 핵심 요소입니다. 현재 서명이 필요한 문서는 몇 개이며, 시간이 지남에 따라 어떻게 변화할까요? 통합 고려 사항은 아키텍처에 영향을 미칩니다. 기존 애플리케이션 및 워크플로에 서명 기능은 어떻게 통합될까요? 라이브러리는 최대한의 유연성을 제공하는 반면, 외부 플랫폼은 API 및 사용자 인터페이스에 맞춰 조정해야 할 수 있습니다. 서명 당사자 유형은 복잡성에 영향을 미칩니다. 문서는 관리형 인증서를 가진 내부 사용자만 서명할 수 있습니까, 아니면 외부 서명자도 허용해야 합니까? 규제 환경에 따라 기술적 요구 사항이 결정됩니다. 어떤 규정이 적용되며, 이러한 규정은 구현 방식 선택에 어떤 영향을 미칩니까? 일부 요구 사항은 서비스를 이용하면 더 쉽게 충족할 수 있습니다. 다른 것들은 내부 통제가 필요합니다. 기술적 자원이 실현 가능성을 결정합니다. 팀이 서명 기능을 구현하고 유지 관리할 여력이 있습니까? 아니면 그 기능 때문에 핵심 개발 우선순위에 집중할 시간이 부족해질까요? 다음 단계 .NET 애플리케이션에 디지털 서명 기능을 구축하려면 암호화 기본 원리와 비즈니스 문서 처리에 필요한 실질적인 요구 사항을 모두 이해해야 합니다. IronPDF는 인증서 기반 서명 , 시각적 서명 렌더링 , 다자간 워크플로 지원 및 서명 검증을 위한 기술적 기반을 제공하는 동시에 이러한 기능을 언제 어떻게 사용할지에 대한 아키텍처적 결정은 특정 요구 사항을 잘 아는 개발자에게 맡깁니다. 이 가이드에서 다루는 기능은 계약 실행 자동화, 승인 절차 구현 또는 규정 준수 요구 사항 충족 등 어떤 목적이든 견고한 서명 구현을 위한 기반을 제공합니다. 하드웨어 기반 키 저장소가 필요한 Enterprise 환경의 경우, HSM 서명 가이드는 이러한 패턴을 PKCS#11 장치로 확장합니다. 서명이 문서 보안 전략의 일부인 경우, 서명을 암호 보호, 권한 설정 및 PDF 암호화 와 결합하여 다층적인 보안을 구축하십시오. 건축을 시작할 준비가 되셨나요? IronPDF를 다운로드 하고 무료 체험판을 사용해 보세요. 구매 결정을 내리기 전에 실제 문서를 사용하여 인증서 기반 서명, 서명 확인 및 다자간 워크플로를 평가할 수 있습니다. 서명 아키텍처 또는 규정 준수 통합에 대해 궁금한 점이 있으면 엔지니어링 지원팀에 문의하십시오 . 자주 묻는 질문 PDF 문서에서 디지털 서명이란 무엇인가요? 디지털 서명은 PDF 문서의 진위와 무결성을 확인하는 데 사용되는 암호화 메커니즘입니다. 이를 통해 문서가 변조되지 않았음을 보장하고 서명자의 신원을 확인할 수 있습니다. IronPDF를 사용하여 C#에서 디지털 서명을 구현하는 방법은 무엇인가요? IronPDF는 C#을 사용하여 PDF에 디지털 서명을 구현할 수 있는 간편한 API를 제공합니다. 인증서 서명, 시각적 서명 추가, 다자간 워크플로 관리 등을 통해 프로그래밍 방식으로 문서에 서명할 수 있습니다. IronPDF는 어떤 유형의 디지털 서명을 지원합니까? IronPDF는 인증서 기반 서명, 시각적 서명, 추가 검증을 위해 타임스탬프 서버가 필요한 서명 등 다양한 유형의 디지털 서명을 지원합니다. IronPDF를 사용하여 PDF의 디지털 서명을 확인할 수 있습니까? 네, IronPDF에는 PDF 문서의 디지털 서명을 검증하는 기능이 포함되어 있어 문서가 서명된 이후 변조되지 않고 진본임을 확인할 수 있습니다. 디지털 서명에서 타임스탬프 서버의 역할은 무엇인가요? 타임스탬프 서버는 디지털 서명이 문서에 적용된 시점을 확인할 수 있는 신뢰할 수 있는 시간 정보를 제공합니다. 이를 통해 서명 시점을 정확하게 검증하여 보안을 강화할 수 있습니다. 시각적 서명은 디지털 인증서와 어떻게 다른가요? 시각적 서명은 문서에 서명을 그래픽으로 표현한 것이지만, 디지털 인증서는 시각적 표시를 반드시 표시하지 않고도 진위성과 무결성에 대한 암호화된 증명을 제공합니다. IronPDF는 다자간 서명 워크플로를 처리할 수 있습니까? 네, IronPDF는 다자간 서명 워크플로우를 관리할 수 있어 여러 당사자가 안전하고 체계적인 방식으로 문서에 서명할 수 있습니다. PDF 문서에 디지털 서명을 사용하면 어떤 이점이 있나요? 디지털 서명은 문서의 무결성과 진위성을 보장하여 보안을 강화합니다. 또한 전자 서명을 통해 기존 방식보다 빠르고 효율적인 워크플로우를 간소화합니다. 사용자 개입 없이 프로그램으로 PDF에 서명하는 것이 가능할까요? 네, IronPDF를 사용하면 사용자 상호 작용 없이 C#으로 PDF에 프로그래밍 방식으로 서명할 수 있으므로 자동화된 워크플로 및 일괄 처리에 이상적입니다. 커티스 차우 지금 바로 엔지니어링 팀과 채팅하세요 기술 문서 작성자 커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다. 커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다. 시작할 준비 되셨나요? Nuget 다운로드 17,527,568 | 버전: 2026.2 방금 출시되었습니다 NuGet 무료 다운로드 총 다운로드 수: 17,527,568 라이선스 보기