İçeriğe geç
getnextpdf.com

Enterprise sürüm

Güvenilir listeler (TSL)

AB imza doğrulaması yayımlanmış bir gerçekten başlar: hangi sağlayıcıların nitelikli statüye sahip olduğu. Bu gerçek güvenilir listelerde (TSL’ler) yaşar — her Üye Devletin yayımladığı, AB’nin güvenilir listeler listesi (LOTL) tarafından dizinlenen imzalı XML belgeleri. NextPDF\Enterprise\Security\Tsl\TslPolicyEnforcer, bir TSL URL’sini veya ham XML’i güvenebileceğiniz bir TslDocument’a dönüştürür. Korumalı HTTPS üzerinden getirir, XMLDSig imzasını sabitlediğiniz çıpalara karşı doğrular, sağlamlaştırılmış XML ayrıştırır ve bayat listeleri reddeder. Bir ek çağrı, TslTrustAnchorProvider::buildBundle(), etkin CA/QC hizmetlerini sürümlenmiş bir güven çıpası paketine dönüştürür. Her kapı fail-closed olur; her ret tipli bir istisnadır.

Bu sayfa liste alımı ve çıpa türetmenin sahibidir. Sertifika yol doğrulaması İmza doğrulaması içinde yaşar. eIDAS güvence düzeyi eşlemesi eIDAS güvence düzeyleri içinde yaşar. Konteyner güven bağlaması ASiC güven bağlaması içinde yaşar.

Bu yetenek NextPDF Enterprise (nextpdf/enterprise) ile gelir ve bir Enterprise katmanı lisans zarfıyla etkinleşir. Bu yetkiye sahip olmayan bir dağıtım, yeteneğin sınıflarını yüklemez. Sürümleri karşılaştırın ve bir lisans edinin.

Terminal window
composer require nextpdf/enterprise

Etkinleştirme, Enterprise lisans zarfınızı gerektirir. Bkz. Kurulum ve kimlik doğrulama. Bu sayfadaki sınıflar NextPDF\Enterprise\Security\Tsl altında yaşar; ağ politikası türleri NextPDF\Enterprise\Security altında yaşar. Çevrimiçi getirme, ayrıca herhangi bir PSR-18 istemcisi ve PSR-17 fabrikası gerektirir (örneğin guzzlehttp/guzzle).

eIDAS Madde 22 uyarınca, her Üye Devlet, otomatik işleme için imzalanmış veya mühürlenmiş olarak, nitelikli güven hizmeti sağlayıcılarının bir güvenilir listesini yayımlar. ETSI TS 119 612 XML biçimini tanımlar. Liste yalnızca üç kontrolün kıldığı kadar güvenilirdir: imzası, yapısı ve tazeliği. NextPDF bunları bu sırayla, tek bir hat olarak çalıştırır:

  1. GetirTslFetcher, XML’i yalnızca HTTPS üzerinden alır. Herhangi bir dışa çıkıştan önce bir SSRF koruması ana bilgisayarı doğrular. Yanıtlar boyut sınırlıdır ve bir PSR-16 önbelleği ETag yeniden doğrulamasını ve hava boşluklu okumaları etkinleştirir.
  2. DoğrulaTslSignatureVerifier, sarmalanmış XMLDSig imzasını kontrol eder. İmzalama sertifikası, bant dışında sabitlediğiniz bir güven çıpasına zincirlenmelidir; belgenin içindeki hiçbir şeye kendi başına güvenilmez.
  3. AyrıştırTslXmlParser, şema bilgilerini ve her TSP hizmetini değişmez bir TslDocument’a çıkarır. DOCTYPE taşıyan belgeler, herhangi bir varlık tablosu inşa edilmeden önce reddedilir.
  4. Zorla — listenin NextUpdate anı geçmiş olmamalıdır. Bayat bir liste atılır, asla tüketilmez.

TslPolicyEnforcer dördünü de birleştirir; ondan gelen bir TslDocument her kapıdan geçmiştir. Oradan, TslTrustAnchorProvider::buildBundle(), hem granted statüsünde hem de CA/QC türünde olan hizmetleri süzer ve bir EnterpriseCaTrustAnchorBundle üretir: sabitlenmiş PEM çıpaları, bir tsl-<territory>-seq<N> sürümü ve bir SHA-256 bütünlük özeti. Yol doğrulamasının ve ASiC güven bağlamasının tükettiği şey işte bu pakettir.

Aynı makine LOTL iş akışını da kapsar. LOTL’u manuel olarak sabitlenmiş bir çıpaya karşı doğrulayın; ardından her Üye Devlet TSL’sini, LOTL’un onun için bildirdiği imzalama sertifikalarına karşı doğrulayın.

Yük taşıyan karar, genel XMLDSig yerine sabit, minimal bir doğrulama profilidir. Esnek XML imza işleme — keyfi dönüşüm zincirleri, saldırgan tarafından bildirilen ID referansları, algoritma çevikliği — doğrulayıcıların tarihsel olarak kırıldığı yerdir. Bu nedenle doğrulayıcı tam olarak bir işleme modelini kabul eder: özel C14N, kök kapsayan bir referans ve iki dönüşümlü hat [enveloped-signature, exclusive-C14N]; diğer her şey fail-closed reddedilir. Güven hiçbir zaman belgenin kendisinden önyükleme yapmaz: KeyInfo sertifikaları yalnızca yapılandırdığınız çıpalara zincirlenir. Tazelik TslDocument’ın kendisinde yaşar, böylece tek bir isteğe bağlı işbirlikçi yerine her tüketici yolu onu zorlar. Sonuç, test edilebilir, deterministik ve neyi reddettiği konusunda dürüst olan küçük bir çekirdektir.

Tasarım arka planı: Nitelikli imzalar, açıklandı.

Orkestre edilmiş giriş noktası: tek çağrıda getir, doğrula, ayrıştır ve tazelik kontrolü yap.

public function __construct(
private readonly TslFetcher $fetcher,
private readonly TslSignatureVerifier $verifier,
private readonly TslXmlParser $parser,
) {}
public function fetchAndVerify(string $url): TslDocument
public function verifyXml(string $xml): TslDocument

Şununla fırlatır veya başarısız olur: getirme aşamasından TslFetchException ve NextPDF\Enterprise\Security\NetworkPolicyViolation; imza doğrulamasından TslSignatureException; ayrıştırmadan, kanonik olmayan bir NextUpdate değerinden veya bayat bir listeden TslParseException. Her iki yöntem de yalnızca her kapı geçtiğinde bir TslDocument döndürür. Buradaki bayatlık kapısı NextUpdate’i mevcut sistem saatiyle karşılaştırır.

ETag tabanlı önbelleğe alma ve bir ağ politikası kapısıyla HTTP getirici.

public function __construct(
private readonly ClientInterface $httpClient,
private readonly RequestFactoryInterface $requestFactory,
private readonly ?CacheInterface $cache = null,
private readonly int $defaultTtlSeconds = 3600,
private readonly int $maxBytes = 16_777_216,
private readonly NetworkPolicy $networkPolicy = NetworkPolicy::ONLINE,
) {}
public function fetch(string $url): string

Şununla fırlatır veya başarısız olur: HTTPS olmayan bir URL’de, reddedilen (SSRF) bir ana bilgisayarda, bir HTTP hata durumunda, boyutu aşırı bir yanıtta veya boş bir gövdede TslFetchException; NetworkPolicy::STRICT_OFFLINE etkin olduğunda ve önbelleğe alınmış gövde bulunmadığında NetworkPolicyViolation. Önbelleğe alınmış gövdeler 304 Not Modified yeniden doğrulamasını karşılar ve STRICT_OFFLINE altında sunulan tek gövdelerdir. Önbellek girdileri $defaultTtlSeconds süresince yaşar.

İmzalı güvenilir listeler için XMLDSig doğrulayıcı.

public function __construct(
private readonly array $trustAnchorsPem,
private readonly int $clockTolerance = 0,
)
public function verify(string $xml): string

verify(), $trustAnchorsPem içinden birine zincirlendiği kanıtlanmış imzalama sertifikasının PEM’ini döndürür. Yapıcı, çıpa listesi boş olduğunda InvalidArgumentException fırlatır. $clockTolerance, sertifika geçerlilik penceresini saniye cinsinden simetrik olarak genişletir.

Kabul edilen profil sabittir. İmza algoritmaları: ALLOWED_SIG_ALG izin listesi (rsa-sha256/384/512, ecdsa-sha256/384/512). Özetler: ALLOWED_DIGEST_ALG izin listesi (SHA-256, SHA-384, SHA-512). Kanonikalizasyon: yalnızca özel C14N 1.0. SHA-1 ve MD5, unsupported_algorithm olarak reddedilir.

Şununla fırlatır veya başarısız olur: makine tarafından okunabilir bir reason taşıyan TslSignatureException:

Reason codeAnlamı
missing_signatureBelgenin ds:Signature öğesi yoktur.
untrusted_signerKeyInfo sertifikası, yapılandırılmış bir çıpaya zincirlenmez.
invalid_signatureYapısal bir kusur veya RSA/ECDSA kontrolü başarısız oldu.
digest_mismatchReferans özeti, kanonikalize edilmiş belgeyle eşleşmiyor.
unsupported_algorithmİzin listesi dışında bir imza veya özet algoritması.
unsupported_transformSabit profil dışında bir kanonikalizasyon veya dönüşüm hattı.
expired_anchorBir zincir sertifikası geçerlilik penceresinin dışında veya geçerliliği ayrıştırılamaz.

İmzadan bağımsız yapısal ayrıştırıcı. Çağıranlar çıktısına güvenmeden ÖNCE doğrulamalıdır; TslPolicyEnforcer bu sıralamayı sizin için zorlar.

public function parse(string $xml): TslDocument

Şununla fırlatır veya başarısız olur: XML bir DOCTYPE bildirdiğinde (XXE ve varlık genişletme sağlamlaştırması), ayrıştırılamadığında, TrustServiceStatusList kökünden yoksun olduğunda veya geçersiz bir TSLSequenceNumber taşıdığında TslParseException. Sınıf, NS_TSL, NS_DSIG ve NS_TSL_X ad alanı sabitlerini açığa çıkarır.

TslDocument, değişmez bir değer nesnesidir: schemeTerritory, schemeOperatorName, tslType, sequenceNumber, issueDateTime, nextUpdate, tspServices ve rawXmlSha256 (ham baytlar üzerinde kanıt özeti).

public function isStale(DateTimeImmutable $now): bool
public function assertFresh(DateTimeImmutable $now): void
public function servicesOfType(string $serviceTypeIdentifier): array
public function activeServices(): array

Şununla fırlatır veya başarısız olur: isStale() ve assertFresh(), nextUpdate açık bir Z veya sayısal ofsete sahip kanonik bir UTC dateTime olmadığında TslParseException fırlatır; bayat bir liste assertFresh()’i fırlatmaya iter. activeServices(), yalnızca granted statüsündeki hizmetleri döndürür. servicesOfType(), ETSI hizmet türü URI’sine göre süzer.

Her TspService girdisi tspName, serviceName, serviceTypeIdentifier, serviceStatus, statusStartingTime, serviceCertificatePem, qualifiers ve additionalServiceInformation özelliklerini, ayrıca şunları açığa çıkarır:

public function isGranted(): bool
public function isQualifiedCa(): bool

Yararlı sabitler: TspService::STATUS_GRANTED, TspService::STATUS_WITHDRAWN, TspService::TYPE_CA_QC, TspService::TYPE_OCSP_QC, TspService::TYPE_TSA_QTST. Niteleyici URI’leri (örneğin TspServiceQualifier::FOR_ESIG, FOR_ESEAL, QSCD_STATEMENT, NO_QSCD) eIDAS eşleme katmanı için TspServiceQualifier üzerinde belirir.

public function buildBundle(TslDocument $tsl, DateTimeImmutable $now): EnterpriseCaTrustAnchorBundle

Şununla fırlatır veya başarısız olur: TSL $now’da bayat olduğunda, nextUpdate kanonik bir UTC değeri olmadığında veya liste hiçbir etkin CA/QC hizmeti içermediğinde TslParseException.

BC notu — buildBundle($now) tazelik kuralı. buildBundle(), doğrulama anını gerektirir ve tek bir çıpa çıkarmadan önce TslDocument::assertFresh($now) çağırır. Daha önceki revizyonlar, ayrıştırıcının ürettiği bir TslDocument’tan herhangi bir tazelik kontrolü olmadan çıpa türetebiliyordu. Önbelleğe alınmış veya arşivlenmiş listeler besleyen çağıranlar, artık doğrulamalarının çalıştığı anı geçirmelidir; o anda bayat olan bir liste, güven çıpalarını sessizce ekmek yerine fırlatır.

Döndürülen EnterpriseCaTrustAnchorBundle, salt okunur bir değer nesnesidir: anchorsPem (PEM çıpaları), bundleVersion (tsl-<territory>-seq<N>) ve bundleSha256 (kanonikalize edilmiş PEM birleştirmesi üzerinde bütünlük özeti). Onu buildBundle()’dan edinin; elle inşa etmeyin — yapıcı, bir özet uyuşmazlığında veya bozuk PEM’de InvalidArgumentException fırlatır.

public function containsFingerprint(string $anchorDerSha256Hex): bool
public static function computeBundleSha256(array $anchorsPem): string

Yerel olarak yansıtılmış bir güvenilir listeyi kimlik doğrulayın ve tüketin. Bu yol için bir HTTP bağımlılığı gerekmez: doğrulayın, ayrıştırın, ardından doğrulama anınızda tazeliği kapılayın.

tsl-verify-quickstart.php
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use NextPDF\Enterprise\Security\Tsl\TslParseException;
use NextPDF\Enterprise\Security\Tsl\TslSignatureException;
use NextPDF\Enterprise\Security\Tsl\TslSignatureVerifier;
use NextPDF\Enterprise\Security\Tsl\TslXmlParser;
// The list-signing certificate, pinned OUT-OF-BAND. Never take it from the list itself.
$pinnedAnchorPem = (string) file_get_contents(__DIR__ . '/tsl-signer-anchor.pem');
// A trusted-list XML document you mirrored locally.
$tslXml = (string) file_get_contents(__DIR__ . '/member-state-tsl.xml');
try {
// 1. Authenticate: XMLDSig must verify AND the signer must chain to the pinned anchor.
(new TslSignatureVerifier(trustAnchorsPem: [$pinnedAnchorPem]))->verify($tslXml);
// 2. Parse the now-authenticated bytes.
$tsl = (new TslXmlParser())->parse($tslXml);
// 3. Freshness: refuse a list whose NextUpdate has passed.
$tsl->assertFresh(new DateTimeImmutable('now', new DateTimeZone('UTC')));
} catch (TslSignatureException $e) {
fwrite(STDERR, "TSL rejected ({$e->reason}): {$e->getMessage()}" . PHP_EOL);
exit(1);
} catch (TslParseException $e) {
fwrite(STDERR, 'TSL unusable: ' . $e->getMessage() . PHP_EOL);
exit(1);
}
echo "Territory: {$tsl->schemeTerritory}\n";
echo "Sequence: {$tsl->sequenceNumber}\n";
echo 'Active services: ' . count($tsl->activeServices()) . "\n";

Beklenen çıktı (değerler listeye göre değişir):

Territory: DE
Sequence: 127
Active services: 143

Tam çevrimiçi hattı bağlayın: önbelleğe almalı korumalı getirme, imza doğrulaması, ayrıştırma, tazelik, ardından çıpa paketi türetme. Her başarısızlık sınıfı ayrı ayrı yakalanır ve raporlanır.

tsl-anchor-bundle-production.php
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\HttpFactory;
use NextPDF\Enterprise\Security\NetworkPolicy;
use NextPDF\Enterprise\Security\NetworkPolicyViolation;
use NextPDF\Enterprise\Security\Tsl\TslFetchException;
use NextPDF\Enterprise\Security\Tsl\TslFetcher;
use NextPDF\Enterprise\Security\Tsl\TslParseException;
use NextPDF\Enterprise\Security\Tsl\TslPolicyEnforcer;
use NextPDF\Enterprise\Security\Tsl\TslSignatureException;
use NextPDF\Enterprise\Security\Tsl\TslSignatureVerifier;
use NextPDF\Enterprise\Security\Tsl\TslTrustAnchorProvider;
use NextPDF\Enterprise\Security\Tsl\TslXmlParser;
use Symfony\Component\Cache\Adapter\FilesystemAdapter;
use Symfony\Component\Cache\Psr16Cache;
// Any PSR-18 client, PSR-17 factory, and PSR-16 cache work; these are examples.
$enforcer = new TslPolicyEnforcer(
fetcher: new TslFetcher(
httpClient: new Client(),
requestFactory: new HttpFactory(),
cache: new Psr16Cache(new FilesystemAdapter('tsl')),
defaultTtlSeconds: 3600,
maxBytes: 16_777_216,
networkPolicy: NetworkPolicy::ONLINE,
),
verifier: new TslSignatureVerifier(
trustAnchorsPem: [(string) file_get_contents(__DIR__ . '/tsl-signer-anchor.pem')],
clockTolerance: 300,
),
parser: new TslXmlParser(),
);
// Use the official publication URL for your scheme territory (HTTPS required).
$tslUrl = 'https://trusted-lists.example.eu/member-state-tsl.xml';
$now = new DateTimeImmutable('now', new DateTimeZone('UTC'));
try {
$tsl = $enforcer->fetchAndVerify($tslUrl);
$bundle = (new TslTrustAnchorProvider())->buildBundle($tsl, $now);
} catch (NetworkPolicyViolation $e) {
// Air-gapped posture: egress forbidden and no cached body available.
fwrite(STDERR, 'Network policy: ' . $e->getMessage() . PHP_EOL);
exit(75);
} catch (TslFetchException $e) {
// Transport layer: SSRF-rejected URL, HTTP error, oversized or empty body.
fwrite(STDERR, 'Fetch failed: ' . $e->getMessage() . PHP_EOL);
exit(1);
} catch (TslSignatureException $e) {
// Authentication layer: treat as a potential attack, not a retry case.
fwrite(STDERR, "Signature rejected ({$e->reason}): {$e->getMessage()}" . PHP_EOL);
exit(1);
} catch (TslParseException $e) {
// Structure or freshness: stale list, malformed NextUpdate, no active CA/QC services.
fwrite(STDERR, 'List unusable: ' . $e->getMessage() . PHP_EOL);
exit(1);
}
printf(
"Anchor bundle %s: %d anchors (sha256 %s...)\n",
$bundle->bundleVersion,
count($bundle->anchorsPem),
substr($bundle->bundleSha256, 0, 12),
);

Beklenen çıktı (değerler listeye göre değişir):

Anchor bundle tsl-de-seq127: 96 anchors (sha256 4b0e2a9f31c8...)

Pakete karşı gerçekleştirdiğiniz her doğrulamayla birlikte bundleVersion ve bundleSha256’yı kaydedin. Bunlar, her kararın arkasındaki tam çıpa kümesini adlandırır.

  • Zorlayıcının tazelik kapısı mevcut saati kullanır. fetchAndVerify() ve verifyXml(), NextUpdate’i çoktan geçmiş bir listeyi reddeder. Arşivlenmiş bir listeye karşı tarihsel doğrulama için TslSignatureVerifier ve TslXmlParser’ı doğrudan çalıştırın, ardından kanıtınızın desteklediği geçmiş anla assertFresh() çağırın.
  • buildBundle(), $now’unuzda tazeliği yeniden öne sürer. Zorlayıcıdan geçmiş bir liste, doğrulama anınız daha sonraysa burada yine de reddedilebilir. Yukarıdaki BC notuna bakın.
  • trustAnchorsPem’i asla doğruladığınız listeden tohumlamayın. Çıpa, bant dışında sabitlenmiş bir kaynaktan (LOTL için) veya zaten doğrulanmış bir üst listeden (Üye Devlet TSL’leri için) gelmelidir. Başka herhangi bir şey doğrulamayı döngüsel hale getirir.
  • Herhangi bir yerdeki DOCTYPE ölümcüldür. Uyumlu TSL’ler asla bir DTD taşımaz, bu yüzden ayrıştırıcı, libxml bir varlık tablosu inşa etmeden önce herhangi bir DOCTYPE’ı reddeder. Bu, bir ayrıştırıcı sınırlaması değil, kasıtlı bir sağlamlaştırmadır.
  • Eksik yapısal alanlar güvenli şekilde bozulur. Okunabilir bir statüsü olmayan bir hizmet withdrawn olarak ele alınır, böylece asla bir çıpa olamaz. Eksik bir şema bölgesi unknown olarak ayrıştırılır. Fail-closed varsayılanlar, bozuk girdileri güven malzemesinin dışında tutar.
  • Ara sertifikalar gerçek CA’lar olmalıdır. Zincir inşası sırasında, basicConstraints cA=TRUE olmayan (veya keyCertSign olmadan keyUsage öne süren) bir aday veren atlanır. KeyInfo içine sokuşturulmuş bir uç varlık sertifikası, bir yol ara sertifikası olarak hizmet edemez. Zincirler 8 derinlikte sınırlanır.
  • NextUpdate kanonik UTC olmalıdır. Açık bir Z veya sayısal ofset olmayan bir değer TslParseException fırlatır. Asla sunucunun yerel saat diliminde yeniden yorumlanmaz.
  • Büyük listeler ve bayt sınırı. Yanıtlar $maxBytes’a kadar okunur (varsayılan 16 MiB). Şemanızın listesi daha büyükse sınırı yapıcıda yükseltin; kırpma, sessiz kabul olarak değil, asla, bir imza başarısızlığı olarak yüzeye çıkar.
  • clockTolerance yalnızca genişletir. Sertifika geçerlilik kontrollerine simetrik gevşeklik ekler. Liste düzeyindeki tazelik kapısını gevşetmez.
  • Her zaman ayrıştırmadan önce doğrulayın. TslXmlParser, tasarım gereği imzadan bağımsızdır. TslPolicyEnforcer, doğrulamayı önce sıralar; parçaları kendiniz birleştirirseniz o sırayı koruyun.
  • Derinlemesine SSRF savunması. fetch(), https:// gerektirir ve ana bilgisayarı, yeniden bağlamayı hafifletmek için A ve AAAA DNS çözümlemesiyle özel, geri döngü, bağlantı yerel, CGN ve bulut meta veri aralıklarına karşı doğrular. Reddedilen bir URL, herhangi bir dışa çıkıştan önce fırlatır.
  • XXE ve varlık genişletme sağlamlaştırması. DOCTYPE taşıyan belgeler, varlık tablosu var olmadan önce ve yükleme sonrasında tekrar reddedilir. Ağ varlık yükleme devre dışıdır; dış varlıklar asla yerine konmaz.
  • Sıkı XMLDSig profili. Yalnızca özel C14N; tam olarak [enveloped-signature, exclusive-C14N] dönüşüm çifti; doğrulanmış referans belge kökünü kapsamalıdır; sarmalanmış dönüşüm yalnızca doğrulanmış imzayı kaldırır, kardeş imzaları korur. Kullanımdan kaldırılmış algoritmalar (SHA-1, MD5) reddedilir.
  • Zincir disiplini. Her zincir bağlantısı — imzalayan, ara sertifikalar ve doğrudan çıpa durumu — zamansal geçerlilik açısından kontrol edilir, ayrıştırılamaz geçerlilik sınırlarında fail-closed olur. Döngüler tespit edilir; derinlik sınırlanır.
  • Hava boşluğu duruşu. NetworkPolicy::STRICT_OFFLINE altında, getirme yolu hiç dışa çıkış yapmaz; yalnızca daha önce önbelleğe alınmış bir gövde sunulabilir ve başka herhangi bir şey NetworkPolicyViolation’ı fail-fast fırlatır.
  • Paket özetleri kurcalamayı değil, bozulmayı algılar. bundleSha256, yapım sırasında doğrulanır ve kopyalama sapmasını algılar. Özet, koruduğu çıpaların aynısından türetildiğinde, bağımsız kurcalama kanıtı değildir. Paketleri sistemler arasında taşırken özetleri bant dışında sabitleyin.

Hat, güvenilir listeleri ETSI TS 119 612’nin tanımladığı gibi tüketir: şema operatörünün imzasını kimlik doğrular (§5.7), şema bilgilerini ve sağlayıcı listesi yapılarını ayrıştırır (§5.3, §5.4, §5.5), UTC dateTime kurallarını zorlar (§5.1.3) ve NextUpdate’i geçmiş olan listeleri atar (§5.3.15). Bu, eIDAS Madde 22’nin imzalanmış, makine tarafından işlenebilir güvenilir listeler modelini destekler. Zincir inşası, aday verenlere RFC 5280 temel kısıtlamalar ve anahtar kullanımı kapılarını uygular.

Destek uygunluk değildir ve uygunluk sertifikasyon değildir. NextPDF, bu sayfanın açıkladığı kontrolleri uygular; herhangi bir kurum tarafından ETSI TS 119 612, eIDAS veya başka herhangi bir standarda karşı sertifikalandırılmamıştır ve NextPDF hiçbir sertifikasyona sahip değildir ve hiçbirini vermez. Bir güvenilir listeyi bu API aracılığıyla tüketmek, tek başına bir imzayı “nitelikli” veya hukuken geçerli kılmaz. Eksiksiz doğrulama sürecinizin bir yasal veya tedarik gereksinimini karşılayıp karşılamadığı, değerlendiricileriniz için bir belirlemedir.

TSL imza doğrulaması, paketlenmiş kripto kütüphanesi aracılığıyla RSA ve ECDSA kontrollerini süreç içinde çalıştırır. Enterprise FIPS modu çalışma zamanı korumasından yönlendirilmez ve FIPS modunu etkinleştirmek davranışını değiştirmez. FIPS onaylı bir kriptografik hizmet değildir ve hiçbir FIPS 140 sertifikasyonu ileri sürülmez. FIPS yükümlülükleri olan dağıtımlar bu API’yi buna göre kapsamalı ve FIPS 140-2/3 kriptografik politikası sayfasına bakmalıdır.

  • fetch(), yalnızca SSRF doğrulamasını geçen HTTPS URL’leri için dışa çıkış yapar, en çok $maxBytes okur ve yapılandırılmış NetworkPolicy’ye uyar; STRICT_OFFLINE altında yalnızca önbelleğe alınmış bir gövde döndürülür.
  • verify() başarılı olmadan önce hiçbir ayrıştırıcı çıktısı güven malzemesi olmaz; TslPolicyEnforcer bu sıralamayı garanti eder.
  • verify(), özet ve imza kontrolü sabit profil altında geçtiğinde ve imzalayan, 8 derinlik içinde ve her bağlantısı zamansal olarak geçerli olarak yapılandırılmış bir çıpaya zincirlendiğinde yalnızca imzalayan PEM’ini döndürür.
  • Zorlayıcı, NextUpdate’i mevcut saatte geçmiş olan herhangi bir listeyi reddeder; buildBundle(), çıpa türetmeden önce çağıranın sağladığı anda tazeliği yeniden öne sürer.
  • Çıpalar yalnızca granted statüsünde ve CA/QC hizmet türünde olan hizmetlerden türetilir; boş bir etkin küme, boş bir paket vermek yerine fırlatır.
  • Her başarısızlık tipli bir istisnadır (TslFetchException, NetworkPolicyViolation, bir neden koduyla TslSignatureException, TslParseException); hiçbir yöntem kısmi veya doğrulanmamış bir belge döndürmez.

NextPDF Core, PDF imzalarını CaTrustAnchorBundle sözleşmesi aracılığıyla açıkça sabitlediğiniz güven çıpalarına karşı doğrular — bkz. Core güvenliği. Core’un güvenilir liste yeteneği yoktur: TSL getirme, XMLDSig liste kimlik doğrulaması, ETSI TS 119 612 ayrıştırması ve nitelikli hizmet girdilerinden çıpa türetme yoktur. Yalnızca Core ile çıpa kümenizi elle bakımını yaparsınız; onu kimlik doğrulanmış AB güvenilir listelerinden türetmek NextPDF Enterprise gerektirir.

Bu sayfa yalnızca dışarıdan gözlemlenebilir davranışı ve desteklenen genel API yüzeyini belgeler. Dahili ad alanı yolları, yardımcı sınıflar, mekanizma tabloları, runbook dosya adları ve talep önekleri kapsam dışıdır.