Enterprise 에디션
서명 인증서를 위한 Certificate Transparency 정책
한눈에 보기
섹션 제목: “한눈에 보기”NextPDF Enterprise는 서명 워크플로가 서명하기 전에 서명 인증서의 Certificate Transparency(CT) 태세를 고려할 수 있게 합니다. CT는 잘못된 발급(mis-issuance)을 탐지할 수 있도록 인증서가 기록되는 공개 로그 생태계입니다. CT에 기록된 인증서는 하나 이상의 서명된 인증서 타임스탬프(SCT)를 담습니다. NextPDF Enterprise는 인증서의 CT 태세를 결과 값으로 표현하며 — SCT 확장이 존재하는지, 몇 개의 SCT가 존재하고 유효한지, 어떤 로그가 발급했는지 — 최소 SCT 임계값 검사를 제공합니다. 이 페이지는 동작 수준입니다. 결과가 무엇을 담는지, 임계값 검사가 어떻게 작동하는지, NextPDF가 무엇을 결정하고 무엇을 결정하지 않는지 명시합니다.
NextPDF Enterprise는 CT 결과를 표현하고 임계값 검사를 수행합니다. CT 로그, 로그 감사자, 모니터가 아닙니다. 그 경계는 보안 및 규정 준수에서 명시됩니다.
사전 요구 사항은 프런트 매터에 명시되어 있으며 사전 요구 사항에서 반복됩니다.
가용성 및 라이선싱
섹션 제목: “가용성 및 라이선싱”이 기능은 NextPDF Enterprise(nextpdf/enterprise)로 제공되며 Enterprise 등급 라이선스 엔벨로프로 활성화됩니다. 해당 권한이 없는 배포는 이 기능의 클래스를 로드하지 않습니다. 에디션 비교 및 라이선스 받기.
이 기능이 하는 일
섹션 제목: “이 기능이 하는 일”CT에 기록된 인증서는 SCT를 담습니다. SCT는 버전, 로그 식별자, 타임스탬프, 그리고 인증서 항목에 대한 로그의 서명을 담습니다(RFC 6962 §3.1). 로그는 인증서를 자신의 추가 전용 로그에 통합하겠다는 약속으로 SCT를 반환하며, 의존 당사자(relying parties)는 유효한 SCT가 없는 인증서를 거부합니다(RFC 6962 §3). Certificate Transparency 2.0 버전은 동일한 모델을 유지합니다. 로그는 제출 시 SCT를 반환하며, 제출자는 이를 신뢰하기 전에 검증합니다(RFC 9162 §3).
NextPDF Enterprise는 인증서의 CT 태세를 다음을 담는 결과 값으로 표현합니다.
- 인증서가 SCT 확장을 포함하는지 여부;
- 발견된 SCT의 총 개수;
- 서명이 유효한 SCT의 개수;
- SCT를 발급한 로그의 로그 식별자 — SHA-256 해시.
결과는 최소 SCT 임계값 검사를 노출합니다. 유효한 SCT 개수가 요구되는 최소값을 충족하거나 초과하는지 보고합니다. 최소값은 귀하의 정책에 맞게 설정합니다. 일반적인 정책은 수명이 짧은 인증서에 대해서는 서로 다른 로그로부터 최소 두 개의 SCT를, 수명이 긴 인증서에 대해서는 더 많은 SCT를 기대합니다. 임계값은 귀하가 선택할 사항입니다.
서명 워크플로에서 임계값 검사를 게이트로 사용하십시오. 서명하기 전에 CT에 기록된 인증서(충분한 개수의 유효한 SCT)를 요구하고, 그렇지 않으면 거부하십시오.
이렇게 작동하는 이유
섹션 제목: “이렇게 작동하는 이유”Certificate Transparency는 좁은 질문에 답합니다. 이 인증서가 공개적으로 기록되어 있는가, 그리고 몇 개의 독립적인 로그에 의해 기록되었는가. NextPDF Enterprise는 그 답을 판정이 아니라 단순한 결과 값으로 모델링합니다. 결과는 SCT 확장 플래그, SCT 개수, 발급 로그 식별자를 보고한 뒤 멈춥니다. 그 태세가 충분히 좋은지는 결정하지 않습니다. 신뢰 임계값은 인증서 수명과 위험에 따라 달라지는 의존 당사자의 정책이기 때문입니다. 그래서 최소 SCT 개수는 귀하가 설정할 사항으로 남고, NextPDF는 로그 운영자, 감사자, 모니터 역할에서 벗어나 있습니다. Certificate Transparency는 건전한 서명 결정에서 여러 검사 중 하나이며, 이 페이지는 이를 서명자가 구성되기 전의 명시적 게이트로 만듭니다.
설계 배경: 서명을 올바르게 검증하기.
사전 요구 사항
섹션 제목: “사전 요구 사항”- NextPDF Core와 Enterprise 패키지를 설치하고, 활성 Enterprise 라이선스를 보유하십시오.
- CT 태세를 강제하려는 서명 인증서를, 귀하의 환경이 그로부터 추출하는 SCT 데이터와 함께 준비하십시오.
- 귀하의 정책이 요구하는 최소 SCT 임계값을 결정하십시오.
- 최소 SCT 임계값 — 인증서가 귀하의 정책을 통과하기 위해 담아야 하는 유효한 SCT의 개수. 임계값 검사에 전달하십시오.
- 정책 배치 — 게이트가 서명 워크플로의 어디에서 실행될지 결정하십시오. 서명자를 구성하기 전이어야, 충분히 기록되지 않은 인증서가 결코 서명 작업에 도달하지 않습니다.
단계별 절차
섹션 제목: “단계별 절차”- SCT 확장 플래그, 총 및 유효 SCT 개수, 로그 식별자를 담은, 서명 인증서에 대한 CT 결과를 얻습니다.
- 귀하의 정책에 대한 최소 SCT 임계값을 결정합니다.
- 임계값 검사를 실행합니다. 통과는 “CT 정책 충족”, 실패는 “이 인증서로 서명 거부”로 취급합니다.
- 서명자가 구성되기 전에 결과를 기준으로 서명 워크플로를 게이트합니다.
<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use NextPDF\Enterprise\Security\CertificateTransparency\CtValidationResult;use Psr\Log\LoggerInterface;
final readonly class CtSigningPolicy{ /** * @param int<1, max> $minimumScts The minimum count of valid SCTs your policy requires. */ public function __construct( private int $minimumScts, private LoggerInterface $logger, ) {}
/** * Decide whether a certificate's CT posture satisfies the policy. * * The gate runs before the signer is constructed, so an under-logged * certificate never reaches a signing operation. A missing SCT extension * is treated as a policy failure, not an exception. * * @param CtValidationResult $result The CT posture of the signing certificate. * * @return bool True when the certificate meets the minimum-SCT threshold. */ public function isAcceptable(CtValidationResult $result): bool { if (! $result->hasSctsExtension) { $this->logger->warning('Signing certificate carries no SCT extension; CT policy not met.');
return false; }
$acceptable = $result->meetsPolicy($this->minimumScts);
if (! $acceptable) { $this->logger->warning('Signing certificate has too few valid SCTs for the CT policy.', [ 'validScts' => $result->validScts, 'minimumScts' => $this->minimumScts, ]); }
return $acceptable; }}- SCT 확장이 존재하고 유효 SCT 개수가 귀하의 임계값에 있는 결과를 빌드하고, 임계값 검사가 통과하는지 확인하십시오.
- 귀하의 임계값보다 하나 낮은 결과를 빌드하고, 검사가 실패하는지 확인하십시오.
- SCT 확장이 없는 결과를 빌드하고, 개수와 무관하게 게이트가 거부하는지 확인하십시오.
- 게이트가 거부할 때 귀하의 서명 워크플로가 서명자를 구성하지 않는지 확인하십시오.
보안 및 규정 준수
섹션 제목: “보안 및 규정 준수”- NextPDF는 표현하고 임계값 검사를 수행하며, 로그를 운영하지 않습니다. NextPDF Enterprise는 CT 태세와 최소 SCT 검사를 표시합니다. CT 로그, 감사자, 모니터가 아니며, 인증서를 로그에 제출하지 않습니다.
- 임계값은 귀하의 정책입니다. 최소 SCT 값은 귀하가 설정할 사항입니다. NextPDF는 숫자를 부과하지 않습니다. SCT 확장이 없는 것은 명백한 정책 실패입니다.
- 서명하기 전에 게이트하십시오. 충분히 기록되지 않은 인증서가 결코 서명 작업에 도달하지 않도록, 서명자를 구성하기 전에 검사를 실행하십시오.
- SCT 시맨틱은 표준을 따릅니다. SCT는 의존 당사자가 존재하고 유효하기를 기대하는 로그의 약속입니다(RFC 6962 §3; §3.1 구조; CT v2 RFC 9162 §3).
이 페이지는 인증서 신뢰에 관한 것입니다. 모든 규범적 출처는 의역되었습니다. 규범 텍스트는 재현하지 않습니다.
실패 처리
섹션 제목: “실패 처리”- SCT 확장 없음. SCT 확장이 없는 결과를 정책 실패로 취급하십시오. 서명을 거부하십시오.
- 유효한 SCT가 너무 적음. 귀하의 임계값 미만의 유효 SCT 개수는 검사를 실패시킵니다. 서명을 거부하십시오.
- 정책 배치. 서명자가 구성되기 전에 게이트를 실행하십시오. 서명 후에 실행되는 늦은 검사는 생성된 문서를 보호하지 못합니다.
게시 경계
섹션 제목: “게시 경계”이 페이지는 외부에서 관찰 가능한 동작과 지원되는 공개 API 표면만 문서화합니다. 내부 네임스페이스 경로, 헬퍼 클래스, 메커니즘 표, 런북 파일명, 티켓 접두사는 범위를 벗어납니다.
함께 보기
섹션 제목: “함께 보기”- Security — NextPDF Enterprise — 통합된 Enterprise 보안 표면.
- Signature — NextPDF Enterprise — PAdES B-LT 및 B-LTA 장기 생산자.
- HSM signing — NextPDF Enterprise — PKCS#11 하드웨어 키 보관.
- Security / Signing (Core) — Core CMS 서명자 및 서명 전략 계약.
- Certificate Transparency · SCT — 용어집 항목.