Ir al contenido
getnextpdf.com

Enterprise edición

Directiva de Certificate Transparency para certificados de firma

NextPDF Enterprise permite que un flujo de trabajo de firma tenga en cuenta la postura de Certificate Transparency (CT) de un certificado de firma antes de firmar. CT es el ecosistema de registros públicos en el que se anotan los certificados de modo que la emisión incorrecta sea detectable; un certificado registrado en CT transporta uno o más Signed Certificate Timestamps (SCT). NextPDF Enterprise representa la postura de CT de un certificado como un valor de resultado —si la extensión SCT está presente, cuántos SCT están presentes y son válidos, y qué registros los emitieron— y ofrece una comprobación de umbral de SCT mínimos. Esta página se mantiene en el nivel de comportamiento: expone qué transporta el resultado, cómo funciona la comprobación de umbral y qué decide y qué no decide NextPDF.

NextPDF Enterprise representa y comprueba por umbral un resultado de CT; no es un registro de CT, ni un auditor de registros, ni un monitor. El límite se expone en Seguridad y cumplimiento.

Los requisitos previos se exponen en el frontmatter y se repiten en Requisitos previos.

Esta capacidad se distribuye en NextPDF Enterprise (nextpdf/enterprise) y se activa con un sobre de licencia de nivel Enterprise. Un despliegue sin ese derecho no carga las clases de la capacidad. Comparar ediciones y obtener una licencia.

Un certificado registrado en CT transporta SCT. Un SCT transporta una versión, un identificador de registro, una marca de tiempo y la firma del registro sobre la entrada del certificado, según RFC 6962 §3.1. Un registro devuelve un SCT como su promesa de incorporar el certificado a su registro de solo anexado, y las partes que confían rechazan un certificado que carece de un SCT válido, según RFC 6962 §3. Certificate Transparency versión 2.0 mantiene el mismo modelo: un registro devuelve un SCT en el momento del envío, que el remitente valida antes de confiar en él, según RFC 9162 §3.

NextPDF Enterprise representa la postura de CT de un certificado como un valor de resultado que transporta:

  • si el certificado contiene la extensión SCT;
  • el número total de SCT encontrados;
  • el número de SCT cuyas firmas son válidas;
  • los identificadores de registro —hashes SHA-256— de los registros que emitieron los SCT.

El resultado expone una comprobación de umbral de SCT mínimos: informa de si el número de SCT válidos alcanza o supera un mínimo requerido. El mínimo se establece para que coincida con su directiva. Una directiva común espera al menos dos SCT de registros diferentes para los certificados de vida más corta y más para los de vida más larga; el valor del umbral es suyo a elegir.

Utilice la comprobación de umbral como una compuerta en un flujo de trabajo de firma: exija un certificado registrado en CT (un número suficiente de SCT válidos) antes de firmar, y rechace en caso contrario.

Certificate Transparency responde a una pregunta acotada: ¿está este certificado registrado públicamente y por cuántos registros independientes? NextPDF Enterprise modela esa respuesta como un valor de resultado simple, no como un veredicto. El resultado informa del indicador de extensión SCT, los recuentos de SCT y los identificadores de los registros emisores, y ahí se detiene. No decide si esa postura es suficientemente buena, porque el umbral de confianza es una directiva de la parte que confía que varía según la vida útil y el riesgo del certificado. Así, el número de SCT mínimos queda a su cargo para establecerlo, y NextPDF se mantiene al margen de los roles de operador de registro, auditor y monitor. Certificate Transparency es una comprobación entre varias en una decisión de firma sólida, y esta página la convierte en una compuerta explícita antes de construir el firmante.

Contexto de diseño: Validar una firma correctamente.

  1. Instale NextPDF Core y el paquete Enterprise, y disponga de una licencia Enterprise activa.
  2. Disponga del certificado de firma cuya postura de CT desea exigir, junto con los datos de SCT que su entorno extrae de él.
  3. Decida el umbral de SCT mínimos que requiere su directiva.
  • Umbral de SCT mínimos — el número de SCT válidos que un certificado debe transportar para cumplir su directiva. Páselo a la comprobación de umbral.
  • Ubicación de la directiva — decida en qué punto de su flujo de trabajo de firma se ejecuta la compuerta: antes de construir el firmante, de modo que un certificado insuficientemente registrado nunca llegue a una operación de firma.
  1. Obtenga el resultado de CT para su certificado de firma, que transporta el indicador de extensión SCT, los recuentos de SCT totales y válidos, y los identificadores de registro.
  2. Decida el umbral de SCT mínimos para su directiva.
  3. Ejecute la comprobación de umbral; trate un aprobado como «directiva de CT cumplida» y un fallo como «rechazar firmar con este certificado».
  4. Aplique la compuerta al flujo de trabajo de firma sobre el resultado antes de construir el firmante.
examples/enterprise/ct-policy-gate.php
<?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;
}
}
  1. Construya un resultado con la extensión SCT presente y un recuento de SCT válidos en su umbral, y confirme que la comprobación de umbral se aprueba.
  2. Construya un resultado uno por debajo de su umbral y confirme que la comprobación falla.
  3. Construya un resultado con la extensión SCT ausente y confirme que la compuerta rechaza independientemente del recuento.
  4. Confirme que su flujo de trabajo de firma no construye un firmante cuando la compuerta rechaza.
  • NextPDF representa y comprueba por umbral; no opera registros. NextPDF Enterprise expone la postura de CT y una comprobación de SCT mínimos. No es un registro de CT, ni un auditor, ni un monitor, y no envía certificados a los registros.
  • El umbral es su directiva. El valor de SCT mínimos es suyo a establecer; NextPDF no impone un número. Una extensión SCT ausente es un fallo de directiva claro.
  • Aplique la compuerta antes de firmar. Ejecute la comprobación antes de construir el firmante, de modo que un certificado insuficientemente registrado nunca llegue a una operación de firma.
  • La semántica de los SCT sigue los estándares. Un SCT es la promesa de un registro que las partes que confían esperan que esté presente y sea válida (RFC 6962 §3; §3.1 estructura; CT v2 RFC 9162 §3).

Esta página trata sobre la confianza en certificados. Toda fuente normativa está parafraseada; no se reproduce ningún texto normativo.

  • Sin extensión SCT. Trate un resultado sin la extensión SCT como un fallo de directiva; rechace firmar.
  • Demasiado pocos SCT válidos. Un recuento de SCT válidos por debajo de su umbral falla la comprobación; rechace firmar.
  • Ubicación de la directiva. Ejecute la compuerta antes de construir el firmante; una comprobación tardía que se ejecuta después de firmar no protege el documento producido.

Esta página documenta únicamente el comportamiento observable externamente y la superficie de la API pública admitida. Las rutas de espacios de nombres internos, las clases auxiliares, las tablas de mecanismos, los nombres de archivo de runbooks y los prefijos de tickets quedan fuera de alcance.