콘텐츠로 이동

PAdES 베이스라인 서명으로 PDF 서명하기(이동됨)

이 페이지에 있던 기존 서명 안내는 이제 대체되었습니다. 대신 표준 레시피를 사용하십시오:

PAdES B-B로 PDF에 서명한 다음 PAdES B-T로 확장하기

이 페이지가 변경된 이유(정오표)

섹션 제목: “이 페이지가 변경된 이유(정오표)”

이 페이지의 이전 버전에서는 상위 수준의 Document::setSignature()save() 연결부가 연결되지 않았으며 NotImplementedException을 던진다고 설명했습니다. 이제는 더 이상 사실이 아닙니다. 상위 수준 연결부는 이제 실제 서명을 생성합니다.

Document::setSignature($cert, SignatureLevel::PAdES_B_B)->save()(및 그에 상응하는 output() / getPdfData())은 /Sig 필드를 쓰며, 이 필드는 /ByteRange와 DER로 인코딩된 CMS SignedData 객체를 서명 딕셔너리 Contents 항목에 담습니다. 이는 ISO 32000-2 §12.8이 ETSI.CAdES.detached SubFilter에 대해 규정하는 구조입니다. 결과물은 CMS 검증 가능합니다. 표준 CMS/PKCS#7 검증기가 이를 구문 분석하고 확인합니다.

  • B-B — Core 레벨 — 는 이 연결부를 통해 직접 생성됩니다.
  • B-T는 동일한 호출에서 TsaClient를 전달하여 하나의 RFC 3161 signature-time-stamp를 추가합니다.
  • B-LT / B-LTA동일한 상위 수준 연결부(setSignature($cert, SignatureLevel::PAdES_B_LTA, $tsaClient)->save())를 통해 도달할 수 있으며, 이는 Pro Enterprise 패키지가 모두 설치된 경우에 한합니다. 해당 패키지가 없으면 호출은 부분적인 장기 리비전을 쓰지 않고 페일클로즈됩니다. 암호화된 문서도 B-LT/B-LTA에 대해 페일클로즈됩니다.

하위 수준의 NextPDF\Security\Signature\DigitalSigner 경로는 계속 지원되며, 아래 표준 레시피가 처음부터 끝까지 다루는 대상입니다. 상위 수준 연결부는 동일한 서명 엔진 위에 놓인 얇은 편의 계층입니다. 통합 테스트 스위트는 두 경로를 모두 실행하며 실제로 구문 분석할 수 있는 CMS 객체를 생성합니다.

U-1 주의 사항(주장의 범위). “CMS 검증 가능”이란 생성된 객체가 RFC 5652 및 ISO 32000-2 §12.8에 따라 올바른 형식의 CMS SignedData임을 의미합니다 — 이는 ETSI EN 319 142-1 베이스라인 프로파일 준수에 대한 주장이 아니며, 법적 유효성에 대한 주장도 아닙니다. 해당 표준의 베이스라인 레벨 부분은 검증 코퍼스에 포함되어 있지 않습니다. B-T signature-time-stamp 요구 사항은 ETSI EN 319 122-1 §5.3, RFC 3161, RFC 5652, RFC 5816 및 ISO 32000-2 §12.8에 비추어 확인되었습니다. B-LT/B-LTA는 장기 검증 구조(DSS 딕셔너리와 DocTimeStamp 리비전)를 생성합니다. 이들은 프로파일 준수 테스트를 거친 것으로 내세우지 않습니다. 준수 여부와 법적 유효성 판단은 독립적인 검증기가 수행합니다.

이전 페이지가 디스크상의 산출물에 대해 주장한 구조적 사실은 여전히 정확합니다. 대체 레시피는 그 사실을 근거와 함께 다시 설명합니다:

  • 서명 값은 서명 딕셔너리 Contents 항목에 저장됩니다(ISO 32000-2 §12.8.1).
  • 다이제스트는 ByteRange에 대해 계산되며 서명 값 자체는 제외됩니다(ISO 32000-2 §12.8.1).

이 페이지는 결과로 생성된 서명이 법적으로 유효하다고 주장하지 않습니다. 이는 인증서, 그 신뢰 앵커, 검증기의 정책에 따라 달라지며, 모두 이 라이브러리의 범위 밖에 있습니다.