What it parses
The inspector accepts PEM certificates (the text format with -----BEGIN CERTIFICATE----- headers), binary DER files, and raw Base64-encoded DER without PEM headers.1
Format detection is per line, so a paste that mixes several PEM blocks with different
wrapping is handled gracefully, and DER input is recognised whether or not a PEM header
is present. Paste a single certificate or a full chain of multiple PEM blocks and each
certificate renders as a separate card ordered leaf-first, letting you inspect a complete
trust path in a single view.
For each certificate, the inspector shows the subject and issuer
distinguished name fields (CN, O, OU, C, ST, L), serial number, SHA-256
fingerprint, validity dates with an expiry countdown, public key algorithm
and size, signature algorithm, Subject Alternative Names, Key Usage flags,
Extended Key Usage OIDs, and Basic Constraints.2
You can also fetch a live certificate by typing a domain name into the domain
field; when the certificate-fetch service is configured, the browser sends only the
hostname to that service and renders the returned PEM chain, so no local file is needed
to begin an inspection.
A concrete example ties the badges to real fields. Let's Encrypt
publishes its ISRG Root X1 certificate openly: subject and
issuer both read CN = ISRG Root X1, O = Internet Security
Research Group, confirming it as self-signed, its public key is
4096-bit RSA, well above the 2048-bit weak-key threshold, and its
validity window runs from June 2015 to June 2035, a 20-year span
typical of a root rather than a short-lived leaf certificate. Pasting
that PEM into the inspector renders exactly those fields on a single
expanded ROOT CERTIFICATE card, with no WEAK
KEY or SHA-1 SIGNATURE badge attached, since
the key size clears 2048 bits and the signature uses SHA-256.
Why the fingerprint earns its row
The SHA-256 fingerprint row is a digest computed over the certificate's
exact DER encoding, which makes it an identity for the certificate itself
rather than for the file that carried it. Paste the same certificate twice and the row
does not move. Because PEM is only a text wrapper around the same
DER bytes, a file saved with -----BEGIN CERTIFICATE-----
headers and the same certificate loaded as a raw binary DER file produce
the identical digest, so the row answers the same question in every format the input
accepts: are these the same bytes?
The digest earns its row in three everyday situations. When you re-download a chain
from a vendor portal or re-export it from a server, comparing the fingerprint against
your earlier capture confirms the bytes still encode the same certificate before you
deploy them. When a CA operates several intermediates with near-identical names, the
readable CN rows collide while the digest never does, so the fingerprint
pins down exactly which intermediate you hold. And when a renewal lands, a fresh
certificate always carries a fresh fingerprint. An unchanged fingerprint after a
supposed renewal means the bytes never changed, so the swap you were promised has not
happened yet.
How to Check an SSL Certificate
Parsing a certificate tells you what it contains; checking it tells you whether a client will accept it. The guide below turns the parsed fields into seven checks to run in order, from the validity window and SAN coverage to key strength, chain completeness and security flags, explains why the certificate a server sends can differ from the file on disk, and says what to do about each warning badge.
Checking an SSL certificate means verifying seven properties that together determine whether a TLS connection will succeed and remain secure. These properties cover the certificate's validity window, the domain names it authenticates, the strength of the key algorithm, the trustworthiness of the certificate chain, the presence of required extensions, the issuer's public trust status, and whether any security flags indicate a known weakness. A certificate that looks valid in isolation may fail when served to clients if the chain is incomplete, if the hostname does not match a SAN entry, or if an intermediate CA certificate has expired. Consequently, checking a certificate requires examining the full chain rather than the leaf alone1. This guide walks through each check in order, using the CapyToolkit Certificate Inspector as the inspection tool throughout.
The seven properties to check in order
Every SSL certificate check should verify validity, coverage, key strength, chain completeness, issuer trust, extension correctness, and security flags. Each of these properties addresses a distinct failure mode, and skipping any one of them can leave a deployment vulnerable to a class of TLS errors that are difficult to diagnose after the fact.
Validity means confirming the current date falls between the certificate's notBefore and notAfter values. Coverage means confirming the hostname you serve appears in the Subject Alternative Names extension as a dNSName or iPAddress SAN. Key strength means confirming the algorithm is RSA 2048 or stronger, or ECDSA P-256 or stronger2. Chain completeness means verifying a continuous path exists from the leaf up to a trusted root1. Issuer trust means confirming the signing CA is publicly trusted. Extension correctness means verifying Basic Constraints, Key Usage, and Extended Key Usage are present and configured as expected. Finally, security flags mean checking for EXPIRED, WEAK KEY, SHA-1 SIGNATURE, and WILDCARD SAN conditions that warrant action.
How the seven checks map to common failure modes
Validity failures cause hard errors in every TLS client, while chain completeness failures often appear only on fresh clients that have not cached the intermediate certificate. Key strength and signature algorithm issues matter most for compliance frameworks that mandate minimum cryptographic strength, such as PCI DSS. Extension correctness affects whether a certificate can be used for its intended purpose, since a certificate missing the Extended Key Usage for TLS server authentication may be rejected even when the chain is valid.
The seven checks are most useful as a single pass rather than seven separate inspections. Running them together catches the combination failures that bite in production, such as a valid chain paired with a missing SAN for one hostname. The CapyToolkit Certificate Inspector runs all seven automatically and groups the results into badges that show whether a certificate passes all seven checks, so you see the whole picture in one screen instead of parsing each field by hand.
Checking the live certificate versus the stored certificate file
A certificate that passes all checks in a local file inspection may still fail in production if the wrong file is deployed to the server. Fetching the certificate from the live endpoint shows exactly what TLS clients receive, which may differ from what you believe is configured. The CapyToolkit Certificate Inspector provides a Fetch from domain field that retrieves the live certificate chain by hostname. Using this alongside local PEM inspection catches deployment mismatches: a newly issued certificate not yet deployed, a load balancer node that missed the certificate update, or a CDN that cached the previous certificate.
Furthermore, checking the live certificate confirms the server is sending the full chain rather than the leaf certificate alone, which is a common misconfiguration that causes handshake failures for clients without a cached copy of the intermediate. This issue is especially common when a CDN or reverse proxy terminates TLS separately from the origin server, because the edge node may have a different certificate configuration than the origin.
Interpreting security badges and taking action
The Certificate Inspector displays coloured badges for conditions that require action. EXPIRED (red) means the certificate is past its notAfter date; the only action is to deploy a replacement immediately. EXPIRES IN N DAYS (orange) means fewer than 30 days remain; initiate renewal now. WEAK KEY (orange) means the RSA key is shorter than 2048 bits per NIST SP 800-57; plan replacement at next renewal. SHA-1 SIGNATURE (amber) means the CA signed the certificate using the broken SHA-1 algorithm; replace at next renewal per NIST guidance3. WILDCARD SAN (muted) is informational rather than a security alert; it reminds you that the key covers the entire subdomain namespace and should have tighter key management. Conversely, a certificate with no badges is not necessarily misconfiguration-free; always verify the chain and SANs regardless of badge status.
What each badge means for your remediation timeline
EXPIRED and EXPIRES IN N DAYS require immediate action because clients reject certificates outside their validity window with no override option. WEAK KEY and SHA-1 SIGNATURE are not urgent blockers in most client configurations, but they fail compliance audits and should be addressed at the next planned renewal rather than waiting for an emergency. WILDCARD SAN is purely informational and requires no remediation beyond ensuring the key is stored securely and rotated on a regular schedule.
When a clean badge status still hides a problem
A certificate with green badges can still cause handshake failures if the server is sending only the leaf certificate without the intermediate4, or if the SAN list does not include the hostname the client is connecting to5. Always treat the badge status as a starting point rather than a complete audit, and use the chain view and SAN list in the inspector to verify the full deployment matches what the badges alone suggest.
Use this guide when setting up a new TLS deployment, when debugging a TLS handshake failure, before a scheduled renewal to confirm the current certificate state, or when auditing a domain for a security assessment or compliance review. It also applies when you receive a certificate file from a vendor or partner and need to verify it meets your requirements before installing it on a production server. Run through these seven checks whenever you rotate keys, migrate from RSA to ECDSA, or change Certificate Authorities, since each transition affects fields that clients validate during every handshake connection. Furthermore, use these checks as a post-deployment verification step after any change to your TLS configuration, CDN settings, or load balancer certificate binding, confirming that clients connecting after the update will complete the handshake correctly without encountering errors caused by a misconfigured or misdeployed certificate.
Checking a staging certificate before production deployment
Paste the staging certificate PEM into the Certificate Inspector. Verify that the domain names in the SAN extension match the production hostnames you plan to use, not staging-specific names. Confirm the chain shows both the leaf and the intermediate certificate.
Diagnosing a TLS handshake failure reported by API clients
Use the Fetch from domain field to inspect the live certificate. Look for an incomplete chain where the last card shows INTERMEDIATE CERTIFICATE rather than ROOT CERTIFICATE, which causes client failures when the intermediate is not cached locally.
Auditing certificates ahead of a key algorithm migration
Inspect each certificate in your inventory for RSA key size and signature algorithm. RSA keys shorter than 2048 bits and SHA-1 signatures are flagged immediately by the WEAK KEY and SHA-1 SIGNATURE badges respectively.
- 1.
CA/Browser Forum, "Baseline Requirements for the Issuance and Management of Publicly-Trusted Certificates," cabforum.org, June 2026. https://cabforum.org/working-groups/server/baseline-requirements/requirements/
- 2.
Barker, E. and Roginsky, A., "Recommendation for Key Management: Part 1 – General," NIST SP 800-57 Part 1 Rev. 5, csrc.nist.gov, 2023. https://nvlpubs.nist.gov/nistpubs/specialpublications/nist.sp.800-57pt1r5.pdf
- 3.
Barker, E. and Roginsky, A., "Transitioning the Use of Cryptographic Algorithms and Key Lengths," NIST SP 800-131A Rev. 2, csrc.nist.gov, March 2019. https://nvlpubs.nist.gov/nistpubs/specialpublications/nist.sp.800-131ar2.pdf
- 4.
E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.3," RFC 8446, IETF, August 2018. https://www.rfc-editor.org/rfc/rfc8446.html
- 5.
P. Saint-Andre and R. Salz, "Service Identity in TLS," RFC 9525, IETF, November 2023. https://www.rfc-editor.org/rfc/rfc9525.html
Enter the domain name in the Fetch from domain field of the CapyToolkit Certificate Inspector and click Fetch. If the certificate is expired, an EXPIRED badge appears immediately at the top of the certificate card. The Days Left field in the General section shows the exact remaining time for non-expired certificates.
Inspect the chain view. If the last card is labeled INTERMEDIATE CERTIFICATE rather than ROOT CERTIFICATE · self-signed, the chain is incomplete. Fetch the live certificate from your domain and compare against your stored certificate files to identify which intermediate is missing from the server configuration.
Yes. Paste the PEM text directly into the Certificate Inspector's textarea, or drop the certificate file (.crt, .pem, .cer, or .der) onto the dropzone. The inspector parses the file locally in your browser and displays all fields without sending the certificate to any server.
A hostname mismatch means the domain name in the browser's address bar does not appear in the certificate's Subject Alternative Names extension. Either the wrong certificate is installed for that hostname, or the hostname was not included in the SAN list when the certificate was issued. Check the SANs in the Certificate Inspector and compare against the hostname clients use.
The Fetch from domain field connects on port 443 by default. For non-standard ports, use the OpenSSL command: openssl s_client -connect hostname:port -showcerts and paste the output PEM into the Certificate Inspector's textarea.
Reading the chain
The leaf certificate is always expanded. Intermediate and root certificates are collapsed by default. Click Expand to view their fields. Between each adjacent pair of cards, a connector line shows which CA issued the certificate above it, making chain relationships visible at a glance. Reading these issuer-to-subject links is how you confirm that each certificate was actually signed by the one card above it, rather than assembled from unrelated sources.
How a well-formed chain is built
A chain is complete only when it terminates at a self-signed root certificate, which is
labelled ROOT CERTIFICATE · self-signed. Path validation works by matching the
issuer distinguished name of each certificate against the subject name of the next one in
the sequence, walking upward until a trust anchor, typically a self-signed root already held
in the browser or operating system store, is reached.3 The
Basic Constraints extension can also carry a pathLenConstraint, which caps how
many non-self-issued intermediate certificates are allowed below a given CA, so an
unexpectedly deep chain can indicate a misconfigured issuer.
If the chain ends without a self-signed certificate, the root is absent and the last card is labelled INTERMEDIATE CERTIFICATE, signalling a partial chain.4 Browsers trust a chain only when they can build an unbroken path from the leaf to a root in their trusted store, so a partial chain causes TLS handshake failures even when the leaf certificate itself is valid and unexpired. Inspecting the connector line and these labels together tells you whether the server is sending the full bundle or whether an intermediate is simply missing.
Inspecting is not verifying
Inspecting a certificate and verifying it are different jobs, and the boundary matters when a decision rides on the result. The cards here report what the bytes contain: fields parsed, roles labelled, badges raised. A verifying client goes further and does three things this inspector never does. It checks each certificate's signature against the public key of the issuer above it, walks the resulting path to a root it actually holds in its own trust store, and may consult revocation status along the way.3 A chain that renders cleanly here has been parsed, not proven; the clean render tells you the structure is readable, and only a verifier's pass tells you a browser or any other client will trust it.
Revocation sits on the same boundary. Certificate authorities publish the revocation status of the certificates they issue, through signed revocation lists or an online status protocol, and a verifying client consults that status while validating a chain.2 This inspector makes no such request: no revocation list is fetched and no status server is contacted, because the inspection reads only the bytes you paste or load. A chain can therefore render perfectly card by card while its leaf sits revoked in the real world, and nothing on any card would say so. When a revocation answer matters to your decision, the check belongs to the verifying client that renders the trust verdict, not to a parser that reads bytes.
Why the same chain can pass in one client and fail in another
Trust has an address. Each operating system and each browser maintains its own list of trusted roots, refreshed by its vendor as roots are added or retired, and a chain verifies on a given client only when it terminates at a root that particular list contains. The inspector labels the self-signed root it finds, but the bytes carry no map of which stores hold it, and no local parse can produce one. That is the quiet reason a complete, current, strong chain can still fail in one client and pass in another: the two clients are consulting different lists, and only one of them contains your root.
Internal certificate authorities make that consequence personal. A private root exists only where someone has installed it, so an internal chain validates on the machine where the root was added and fails on every client that never received it. From the failing client's side, a root it does not hold and an untrusted issuer are the same condition, which is why the error reads as a generic trust failure rather than a missing-root diagnosis. Distributing the internal root to every client that connects, through your management tooling for managed devices and explicit installs elsewhere, is part of deploying an internal CA, not an afterthought you can skip when the first handshake succeeds on the admin's own laptop.
Security flags
The inspector highlights several conditions that deserve attention when you are reviewing a certificate or chain, and it does so with coloured badges that let you scan a card at a glance. These flags cover expiry status, key strength, signature algorithm, and Subject Alternative Name patterns, and they appear on intermediates and roots as well as on the leaf so that a weak spot anywhere in the chain is surfaced immediately.
What each badge means
Each card shows coloured badges for conditions worth attention: EXPIRED (red) for
past notAfter dates, EXPIRES IN N DAYS (orange) when fewer than 30
days remain, WEAK KEY (orange) for RSA keys under 2048 bits, SHA-1 SIGNATURE (amber) for the broken SHA-1 algorithm, and WILDCARD SAN (muted) when at least one
Subject Alternative Name uses a wildcard. Flags appear on intermediates and roots as well as the
leaf, so a weak intermediate key is surfaced immediately rather than hidden behind a strong leaf
certificate.
NIST's comparable-strength table lists RSA 2048 at 112 bits and notes that 80-bit asymmetric keys
are no longer approved, which is why the inspector flags RSA keys below 2048.5
NIST reported the 2017 SHA-1 collision and deprecated SHA-1 for digital signatures, which is why
SHA-1-signed certificates are flagged for replacement.6 Wildcard
SANs matter because RFC 6125 constrains wildcard DNS identifiers to complete left-most labels, so a
wildcard that spans multiple labels broadens the set of hosts the certificate incorrectly
authorises.7
What to check first when a handshake fails
When a TLS handshake fails and you have the chain in hand, work the
cards in a fixed order. Start at the expiry countdown, because an expired or
hours-from-expiry certificate is both the most common failure and the cheapest to
confirm: one glance at the days-left row settles it. Move next to the role labels,
where an INTERMEDIATE CERTIFICATE standing where the ROOT
CERTIFICATE should be means the server is not sending the full bundle.
Then scan for WEAK KEY and SHA-1 SIGNATURE badges,
and finish with the names, checking that every hostname the deployment answers on
appears in the SAN rows. Each step maps to one element on one card.
The order runs cheapest-to-confirm first, because most handshake failures are boring. Expiry beats everything else on both frequency and confirmation cost, the chain labels follow as the next structural fact, and the key and name checks close out the sequence. Walking from the clock to the chain to the key material to the names also means a hit at any step explains the failure, and the remaining steps stop mattering. The sequence still has a scope limit: it covers what pasted bytes can reveal, and a chain that clears every step can fail on the client side for reasons no paste shows.
What the names must cover
A TLS client decides whether a certificate belongs to the site you
asked for by matching your requested hostname against the names in its
Subject Alternative Names extension rather than by reading the Common
Name.7 The Subject CN survives as a
display field; current clients treat the SAN entries as the source of the match.
Every hostname the deployment answers on must therefore appear in the SAN rows.
When one is missing, the handshake stops with a name-mismatch error even though
the chain is complete, the validity window is current, and every key clears its
threshold, which is why a perfectly healthy-looking certificate can still be the
wrong certificate.
On the leaf card, the check reads in seconds. Open the extension panel and read
the SAN rows: the hostnames the client will accept are exactly the names printed
there, and each row's Copy button moves a name straight into a config file when
needed. A deployment serving both the bare domain and its subdomains needs both
forms listed, because a wildcard SAN covers exactly one complete left-most label,
the same RFC 6125 rule behind the wildcard badge. The badge tells you
a wildcard exists; the name rows tell you which hostnames the certificate actually
answers for, and the rows are what settle a mismatch question.
Validity windows and renewal timing
Certificates carry a fixed validity window, and planning renewal before
expiry is a key operational discipline.8
Let's Encrypt currently issues certificates valid for 90 days and is reducing
them to 45 days by 2028, a shorter window that limits exposure time if a private
key is compromised.8
The CA/Browser Forum adopted SC-081v3 in 2025 to reduce the maximum public TLS
certificate lifetime from 398 days to 47 days by March 2029, compressing automated
renewal cycles further.9
Consequently, certificates that once needed annual renewal will require ACME
clients or certificate management platforms capable of handling short-lived
certs without human intervention.10
The inspector's expiry countdown tells you exactly how many days remain, letting
you verify that your monitoring threshold aligns with your actual renewal schedule.
Internal certificates issued by private CAs may still carry multi-year
validity periods, since they are not subject to CA/Browser Forum
requirements.9 While longer validity is convenient
for internal services, a compromised internal certificate stays valid far longer
without detection. Checking the notBefore and notAfter fields in the inspector
gives you the exact window for every certificate in the chain, including long-lived
intermediates that can be forgotten until they expire during a production incident.
Key algorithms and their security implications
The public key algorithm and size determine how hard it is to forge a signature or derive the private key, and the choice has consequences that ripple through the entire chain. RSA 2048 remains the practical baseline for public-facing certificates, while ECDSA offers equivalent security with smaller keys and faster operations. The inspector shows the algorithm and bit length for every certificate in the chain so you can audit intermediates and roots with the same scrutiny you apply to the leaf.
How the algorithm choice affects chain trust
The public key algorithm and size determine how computationally difficult it is to forge a
signature or derive the private key. RSA at 2048 bits is the practical baseline for
public-facing certificates; Cloudflare requires custom certificates to use at least a 2048-bit
RSA key.11 ECDSA (Elliptic Curve Digital Signature Algorithm) is also used for modern
certificates, with Cloudflare's CSR tooling offering p256v1 as a NIST P-256 option alongside
the default RSA 2048-bit key.11 New deployments can often choose ECDSA where client support
and CA policy allow it, rather than defaulting to RSA above 2048 bits.
The inspector shows the key algorithm and bit length for every certificate in the chain. Auditing intermediates and roots matters as much as checking the leaf, because a weak intermediate key undermines the entire chain even when the leaf uses a strong algorithm.4 Building on this, post-quantum migration planning also requires knowing which algorithm each certificate uses, so you can track which certificates will need replacement as quantum-resistant algorithms are standardised and adopted by certificate authorities over the coming years.
Certificate transparency and public discoverability
Certificate Transparency (CT) is a public audit mechanism standardised in
RFC 6962.12
Every publicly trusted TLS certificate must be CT-compliant in modern Chrome,
and TLS-delivered SCTs must include at least two SCTs from distinct CT log operators.13 SCTs can be embedded in the certificate or delivered during the TLS handshake; Chrome formerly accepted SCTs in stapled OCSP responses in older versions.13
CT makes it possible to discover certificates issued for your domain, including
certificates you did not authorise, and a monitoring service watching CT logs
can alert you if a compromised CA issues a rogue certificate before it is deployed
in production.14
Internal or self-signed certificates are not submitted to CT logs and do
not appear in public CT search tools.12 Understanding
this distinction matters when you inspect a chain and notice absent SCT extensions:
the certificate is not automatically suspicious. It may simply be a legitimate
private CA certificate not governed by browser trust requirements. The extension
panel on each card has a fixed scope: it lists exactly the Subject
Alternative Names, Key Usage, Extended Key Usage,
and Basic Constraints groups, and SCT timestamps are not parsed into
any card. The panel therefore says nothing about CT compliance either way. A
public certificate's CT status is read against the logs described above, which is
also where an unauthorised certificate issued for your domain surfaces.
Certificate Security Flag Thresholds
- WEAK KEY RSA under 2048 bits
- SHA-1 SIGNATURE Broken since the 2017 SHAttered collision
- EXPIRES IN N DAYS Fewer than 30 days remaining
Paste your own certificate or chain above and check its badges against these three thresholds.
- 1.
S. Josefsson and S. Leonard, "Textual Encodings of PKIX, PKCS, and CMS Structures," RFC 7468, IETF, April 2015. https://www.rfc-editor.org/rfc/rfc7468
- 2.
D. Cooper et al., "Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile," RFC 5280, IETF, May 2008. https://www.rfc-editor.org/rfc/rfc5280
- 3.
OpenSSL Project, "openssl verify," docs.openssl.org, accessed June 2026. https://docs.openssl.org/3.0/man1/openssl-verify/
- 4.
MDN Web Docs, "Certificate authority," developer.mozilla.org, July 2025. https://developer.mozilla.org/en-US/docs/Glossary/Certificate_authority
- 5.
Elaine Barker, "Recommendation for Key Management: Part 1 - General," SP 800-57 Part 1 Rev. 5, NIST, May 2020. https://csrc.nist.gov/pubs/sp/800/57/pt1/r5/final
- 6.
NIST, "Research Results on SHA-1 Collisions," csrc.nist.gov, February 2017. https://csrc.nist.gov/News/2017/Research-Results-on-SHA-1-Collisions
- 7.
P. Saint-Andre and J. Hodges, "Representation and Verification of Domain-Based Application Service Identity within Internet Public Key Infrastructure Using X.509 (PKIX) Certificates in the Context of Transport Layer Security (TLS)," RFC 6125, IETF, March 2011. https://www.ietf.org/rfc/rfc6125.txt
- 8.
Matthew McPherrin, "Decreasing Certificate Lifetimes to 45 Days," letsencrypt.org, December 2025. https://letsencrypt.org/2025/12/02/from-90-to-45.html
- 9.
CA/Browser Forum, "Ballot SC081v3: Introduce Schedule of Reducing Validity and Data Reuse Periods," cabforum.org, April 2025. https://cabforum.org/2025/04/11/ballot-sc081v3-introduce-schedule-of-reducing-validity-and-data-reuse-periods/
- 10.
R. Barnes et al., "Automatic Certificate Management Environment (ACME)," RFC 8555, IETF, March 2019. https://datatracker.ietf.org/doc/html/rfc8555
- 11.
Cloudflare, "Certificate signing requests (CSRs)," developers.cloudflare.com, May 2026. https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/security/certificate-management/custom-certificates/certificate-signing-requests/
- 12.
B. Laurie, A. Langley, and E. Kasper, "Certificate Transparency," RFC 6962, IETF, June 2013. https://datatracker.ietf.org/doc/html/rfc6962
- 13.
Google Chrome, "Chrome Certificate Transparency Policy," github.com, accessed June 2026. https://github.com/GoogleChrome/CertificateTransparency/blob/main/ct_policy.md
- 14.
Chromium, "Certificate Transparency," chromium.googlesource.com, accessed June 2026. https://chromium.googlesource.com/chromium/src/+/refs/heads/main/net/docs/certificate-transparency.md