우리는 GroupDocs.Signature for .NET v26.9의 출시를 기쁘게 발표합니다. 이번 릴리스는 2026년 9월에 제공됩니다. 이 업데이트는 보안에 중점을 둔 업데이트로 .NET 10 지원을 도입하고 .NET Standard 2.1을 중단했으며 외부 리소스 로드, 해시 알고리즘 및 인증서 검증에 대한 더 엄격한 기본값을 적용합니다. 또한 Word 문서를 포스트-양자(ML-DSA) 인증서로 서명하는 기능을 추가하고 검증, 로깅 및 플랫폼별 동작과 관련된 여러 중요한 버그를 해결했습니다.
이번 릴리스의 새로운 기능
- [Feature] .NET 10 지원 및 .NET Standard 2.1 중단 (SIGNATURENET-5938)
- [Enhancement] 외부 리소스가 기본적으로 로드되지 않음 (SIGNATURENET-5950)
- [Enhancement] PDF 디지털 서명은 기본적으로 SHA-256을 사용하고 HashAlgorithm을 존중 (SIGNATURENET-5976)
- [Enhancement] SignatureFont가 .NET 6 이상에서 System.Drawing 타입을 더 이상 노출하지 않음 (SIGNATURENET-5943)
- [Enhancement] 만료되었거나 아직 유효하지 않은 인증서로 서명하는 경우 기본적으로 거부 (SIGNATURENET-5995)
- [Enhancement] 포스트-양자(ML-DSA) 인증서로 Word 문서 서명 (SIGNATURENET-5996)
- [Bug] PDF 디지털 서명을 암호학적으로 검증하지 않음 (SIGNATURENET-5978)
- [Bug] PDF 문서 검증 시 SubjectName 및 IssuerName이 무시됨 (SIGNATURENET-5997)
- [Bug] 타임스탬프 서버 자격 증명이 사용자 이름과 비밀번호가 모두 설정된 경우에만 전송됨 (SIGNATURENET-5998)
- [Bug] Linux 및 macOS에서 프레젠테이션 및 Word 문서를 이미지로 저장할 때 실패 (SIGNATURENET-5999)
- [Bug] 아카이브 내부 문서에 대해 LoadExternalResources가 무시됨 (SIGNATURENET-6000)
- [Bug] SVG 이미지의 외부 이미지 및 스타일시트가 항상 로드됨 (SIGNATURENET-6001)
- [Bug] 연결된 그림이 있는 스프레드시트 검색 및 검증 시 ArgumentNullException 발생 (SIGNATURENET-6002)
- [Bug] CertificateVerifyOptions.Expired가 로컬 UTC 오프셋으로 잘못 계산됨 (SIGNATURENET-6003)
- [Bug] SignatureSettings.LogLevel이 효과가 없었음 (SIGNATURENET-6004)
- [Bug] 재사용된 VerifyOptions가 이전에 검증된 문서의 서명을 보고함 (SIGNATURENET-6005)
- [Bug] 재사용된 DigitalSignOptions가 첫 번째 인증서와 주석으로 이후 프레젠테이션에 서명함 (SIGNATURENET-6006)
- [Enhancement] 내부 개선 (SIGNATURENET-5979)
Public API 변경 사항
| 멤버 | 변경 내용 |
|---|---|
LoadOptions.SkipExternalResources |
신규. bool, 기본값 true. true인 경우 WhitelistedResources와 일치하는 경우를 제외하고 외부 리소스를 로드하지 않음. |
LoadOptions.WhitelistedResources |
신규. List<string>, 기본값 비어 있음. SkipExternalResources가 true일 때 로드될 수 있는 주소 부분. 주소에 이 중 하나가 포함되면(대소문자 무시) 로드됨. null을 설정하면 목록이 비워짐. |
LoadOptions.LoadExternalResources |
Obsolete. 여전히 작동하지만 SkipExternalResources와 반대 의미임. 기본값이 true에서 false로 변경됨. 사용 시 컴파일러 경고 CS0618 발생. |
SignatureFont implicit conversion from System.Drawing.Font |
제거됨 .NET 6, .NET 8 및 .NET 10 빌드에서. .NET Framework 빌드에서는 Obsolete. 대신 SignatureFont 속성을 직접 할당하세요. |
SignOptions.HashAlgorithm |
서명 자체 변경 없음. 이제 PDF 디지털 서명에 적용되며, 이전에는 무시되었음. |
DigitalVerifyOptions.SubjectName, DigitalVerifyOptions.IssuerName |
서명 자체 변경 없음. 이제 PDF 문서에 적용되며, 이전에는 무시되었음. |
SignatureSettings.LogLevel |
서명 자체 변경 없음. 이제 포함된 레벨의 메시지만 로거에 전달되고, LogLevel.None은 아무 것도 기록하지 않음. 이전에는 값에 관계없이 모든 메시지가 기록되었음. LogLevel 값 설명이 수정됨. |
VerificationResult.Succeeded, VerificationResult.TotalSignatures |
서명 자체 변경 없음. 하나의 VerifyOptions 객체를 여러 Verify 호출에 재사용할 경우, 이제 방금 검증한 문서의 서명만 표시함. |
DigitalSignOptions.AllowExpired |
신규. bool, 기본값 false. false이면 유효 기간이 끝난 인증서로 서명 시 GroupDocsSignatureException이 발생함. true이면 문서가 서명되고 경고가 기록됨. |
DigitalSignOptions.AllowNotYetValid |
신규. bool, 기본값 false. 아직 유효 기간이 시작되지 않은 인증서에 대해 동일하게 동작함. |
새로운 기능
What’s new in this release와 Public API changes에 나열된 내용 외에 새로운 기능은 없습니다.
코드 예제
신뢰할 수 있는 외부 리소스만 허용:
LoadOptions loadOptions = new LoadOptions
{
WhitelistedResources = new List<string> { "https://cdn.example.com/images/" }
};
using (Signature signature = new Signature("sample.docx", loadOptions))
{
// Only images from https://cdn.example.com/images/ are loaded.
}
SHA-384로 서명하고 만료된 인증서를 사용 (경고 포함):
using (Signature signature = new Signature("sample.pdf"))
{
DigitalSignOptions options = new DigitalSignOptions("certificate.pfx")
{
Password = "1234567890",
HashAlgorithm = HashAlgorithm.Sha384 // honoured from this release; the default is SHA-256
};
signature.Sign("signed.pdf", options);
}
만료된 인증서를 명시적으로 허용하여 서명:
SignatureSettings settings = new SignatureSettings(new ConsoleLogger());
using (Signature signature = new Signature("sample.pdf", settings))
{
DigitalSignOptions options = new DigitalSignOptions("certificate.pfx")
{
Password = "1234567890",
AllowExpired = true
};
signature.Sign("signed.pdf", options);
// If certificate.pfx has expired, the document is signed and the console shows a warning such as:
// The signing certificate expired on 2019-05-01 12:00 UTC (subject "CN=...", thumbprint ...).
}
포스트-양자 ML-DSA 인증서로 Word 문서 서명:
using (Signature signature = new Signature("sample.docx"))
{
DigitalSignOptions options = new DigitalSignOptions("ml-dsa-65.pfx")
{
Password = "1234567890"
};
signature.Sign("signed.docx", options);
}
오류와 경고만 표시하도록 로깅 구성:
SignatureSettings settings = new SignatureSettings(new ConsoleLogger())
{
// Errors and warnings, without the step-by-step traces.
LogLevel = LogLevel.Error | LogLevel.Warning
};
업데이트 받는 방법
NuGet
NuGet을 통해 최신 GroupDocs.Signature 패키지로 업그레이드: GroupDocs.Signature 26.9.0
설치 명령:
dotnet add package GroupDocs.Signature --version 26.9.0
직접 다운로드
GroupDocs.Signature for .NET 26.9 페이지에서 어셈블리를 다운로드