디지털 서명

디지털 서명

Aspose.Words FOSS for .NET은 이미 문서에 첨부된 디지털 서명을 검사하고 검증할 수 있습니다 .docx 문서를 통해 Aspose.Words.DigitalSignatures 네임스페이스. 이 에디션은 서명 verification — 서명 메타데이터를 읽고, 유효성을 확인하며, 서명 인증서를 검사합니다. 이 에디션에는 문서에 새로운 서명을 생성하는 기능이 포함되지 않습니다.


문서에서 서명 읽기

모든 Document은(는) DigitalSignatures 속성을 노출하여 DigitalSignatureCollection를 반환합니다 — 로드된 파일에 이미 존재하는 DigitalSignature 객체들의 읽기 전용, 열거 가능한 컬렉션입니다. DigitalSignatureUtil.LoadSignatures(fileName)(및 LoadSignatures(stream) 오버로드)는 전체 문서를 Document 객체로 로드하지 않고 파일이나 스트림에서 직접 서명을 읽어들여 서명 상태만 확인하면 될 때 유용합니다. 컬렉션의 IsValid 속성은 포함된 모든 서명이 유효한지 여부를 보고하고, Count은 발견된 서명의 개수를 보고합니다.


개별 서명 검사

각 DigitalSignature은(는) IsValid(서명이 암호학적으로 유효한지 여부), SignatureType(DigitalSignatureType 값 — CryptoApi, XmlDsig, 또는 Unknown), SignTime, Comments, SubjectName, IssuerName, 그리고 원시 SignatureValue 바이트를 노출합니다. CertificateHolder 속성은 서명 인증서를 래핑한 CertificateHolder 객체를 반환합니다; 그 Certificate 속성은 기본 X509Certificate2를 공개하여 .NET의 자체 인증서 API로 표준 인증서 필드(발급자, 주체, 유효 기간)를 검사할 수 있게 합니다.


이 에디션에서 지원되지 않는 기능

The API 표면은 여전히 서명 관련 멤버를 선언합니다 — DigitalSignatureUtil.Sign(), SignOptions, 그리고 XmlDsigLevel — 상용 Aspose.Words for .NET 객체 모델과 구조적 호환성을 위해 제공되지만, 문서에 새로운 디지털 서명을 만드는 기능은 이 FOSS 에디션에서 작동하지 않습니다. 이 에디션을 사용하여 verify 이미 문서에 존재하는 서명을 처리합니다; 서명 워크플로우를 위해서는 Aspose.Words에 대한 .NET.


팁 및 모범 사례

  • 파일이 서명되었는지 확인만 필요할 때는 전체 Document을 여는 것보다 DigitalSignatureUtil.LoadSignatures()을 사용하는 것이 좋습니다 — 전체 문서 본문을 파싱하는 비용을 피할 수 있습니다.
  • 개별 DigitalSignature.IsValid 값을 반복하기 전에 빠른 통과/실패 판단을 위해 먼저 DigitalSignatureCollection.IsValid을 확인하십시오.
  • SignatureType은 서명을 생성한 서명 메커니즘(CryptoApi vs. XmlDsig)을 알려줍니다; 이는 어떤 인증서 필드가 의미 있는지를 결정합니다.
  • 자동 문서 수집 파이프라인에서는 IsValid == false을 심각한 실패 조건으로 간주하십시오 — 유효하지 않은 서명의 메타데이터를 신뢰할 수 있는 것으로 노출하지 마세요.

일반적인 문제

문제원인수정
DigitalSignatures.Count는 서명된 .docx에서 0입니다파일이 서명 부분을 제거한 도구에 의해 다시 저장되었습니다.다시 저장된 복사본이 아니라 원본 서명 파일을 기준으로 확인하십시오.
서명이 IsValid = false을 보고합니다서명 후 문서 내용이 변경되었거나, 인증서가 신뢰되지 않음/만료됨무효로 처리합니다; 서명을 “복구"하려 시도하지 마십시오
문서에 서명하려고 시도해도 효과가 없습니다이 FOSS 에디션에서는 서명이 구현되어 있지 않습니다서명 워크플로에 대해 .NET (상업용) 대신 Aspose.Words를 사용하십시오
CertificateHolder.Certificate는 검사 시 예외를 발생합니다기본 인증서 데이터가 손상되었거나 서명 부분이 손상되었습니다원본 파일이 진본이며 수정되지 않은 서명된 문서인지 확인하십시오

FAQ

Aspose.Words FOSS for .NET가 문서에 서명할 수 있나요?

아니요. 이 에디션은 기존 디지털 서명을 검증할 수 있지만 새로운 서명을 만들 수는 없습니다. DigitalSignatureUtil.Sign() 메서드와 SignOptions 클래스는 구조적 호환성을 위해 API 표면에 존재하지만, 여기서는 서명이 작동하지 않습니다.

문서를 전체 로드하지 않고 서명 여부를 어떻게 확인할 수 있나요?

DigitalSignatureUtil.LoadSignatures(fileName)을 호출하면 파일에서 직접 DigitalSignatureCollection을 반환합니다.

DigitalSignatureCollection.IsValid는 무엇을 의미하나요?

컬렉션의 모든 서명이 각각 유효할 때만 true이며, 각 DigitalSignature를 검사하기 전에 전체 문서 서명 무결성을 빠르게 확인하는 방법입니다.

서명의 인증서 세부 정보를 어디서 얻을 수 있나요?

DigitalSignature.CertificateHolder.Certificate를 통해 표준 .NET X509Certificate2을 반환합니다.


API Reference 요약

클래스 / 메서드설명
Document.DigitalSignatures로드된 문서에 이미 첨부된 서명
DigitalSignatureUtil.LoadSignatures()전체 문서를 로드하지 않고 파일이나 스트림에서 서명을 읽습니다
DigitalSignatureCollection읽기 전용 컬렉션 DigitalSignature 객체; IsValid, Count
DigitalSignature단일 서명: IsValid, SignTime, SubjectName, IssuerName, CertificateHolder
DigitalSignatureType열거형: CryptoApi, XmlDsig, Unknown
CertificateHolder서명 X509Certificate2을 래핑합니다

참조

 한국어