skip to content

PKI

How a public key becomes a trusted identity: certificate authorities, X.509 fields, chain validation, revocation, and transparency logs. Interviewers probe it when a system needs verified identity.

part ofWeb protocols & securityoverview, primer and where to startread it →
on this pageshow

questions

page 1 of 2

In ACME, which steps run between creating a new order for a DNS name and downloading the issued certificate chain?

level: juniorimportance: must knowfreq 62%

answer

  1. one order, one authorization per name
  2. prove control before anything is signed
  3. ready comes before finalize
  4. issuance is asynchronous, so poll
  5. chain fetched from its own URL

basics

~20 s

An ACME order for a DNS name becomes one authorization per identifier; the client completes one challenge in each, the server validates it, then the client posts a certification request to the order's finalize URL and downloads the chain.

solid answer

~40 s

The client POSTs to `newOrder` with a list of identifiers and gets back an order in `pending` plus one authorization URL per identifier. Each authorization offers challenge types; the client provisions the answer for one of them and tells the server to validate it. When every authorization is `valid` the order moves to `ready`, and the client POSTs a certification request to the order's `finalize` URL. Issuance is asynchronous, so the order sits in `processing` until it becomes `valid` and carries a `certificate` URL. Fetching that URL returns the end-entity certificate and its issuing intermediate as `application/pem-certificate-chain`. Nothing in that flow installs anything — deployment is the operator's job.

code

http · 17 lines
http
POST /acme/new-order HTTP/1.1
Host: acme.ca.example
Content-Type: application/jose+json

{"protected": "...", "payload": "...", "signature": "..."}

HTTP/1.1 201 Created
Content-Type: application/json
Replay-Nonce: oFvnlFP1wIhRlYS2jTaXbA
Location: https://acme.ca.example/acme/order/1/8

{
  "status": "pending",
  "identifiers": [{"type": "dns", "value": "popup-camden.shop.example"}],
  "authorizations": ["https://acme.ca.example/acme/authz/1/42"],
  "finalize": "https://acme.ca.example/acme/order/1/8/finalize"
}

go deeper

for a junior

Recall the sequence and the vocabulary: account, order, authorization, challenge, finalize, certificate. Being able to name the step where a run stopped is most of the value here.

for a middle

Explain why the order has both a ready state and a processing state, and why the chain arrives from its own URL. Know that one authorization exists per identifier.

for a senior

Show that you read the stalled state rather than the exit code — an authorization stuck invalid and an order stuck processing are different incidents with different owners.

for a principal

Frame issuance and deployment as two separate systems with one contract between them, and decide where that handoff is monitored so a healthy issuance job cannot mask a stale served certificate.

ACME (RFC 8555) is the protocol a client speaks to a certificate authority when no human is in the loop: it asks for a certificate covering one or more names, proves control of each of those names, and collects the result. It is worth learning as a small set of objects and the order in which they change state, because almost every operational failure is a stall at one specific state. ## The objects - **directory** — the one URL a client is configured with. It is a JSON object whose fields are the URLs of the other resources: `newNonce`, `newAccount`, `newOrder`, `revokeCert`, `keyChange`, and `newAuthz` only where the server offers pre-authorization. The directory and `newNonce` are what a client can always count on; the rest are conditional on what that server supports, so a client reads the directory rather than hardcoding paths. - **account** — created once at `newAccount`. It carries contact details and agreement to the authority's terms, and every later request is signed by its key pair. - **order** — one request for one certificate, listing **identifiers** such as `{"type": "dns", "value": "popup-camden.shop.example"}`. - **authorization** — the server's record that this account may be issued certificates for one identifier. An order for three names produces three authorizations. - **challenge** — inside an authorization, the concrete task that proves control: publishing a file over HTTP, a DNS record, or a certificate in a dedicated TLS handshake. ## The exchange, step by step 1. Fetch the **directory** and take a nonce from `newNonce`. 2. POST to `newAccount` to create or look up the account; the `Location` header of that response is the account URL used to identify the account afterwards. 3. POST to `newOrder` with the identifiers. The response is an order in `pending` with an `authorizations` array and a `finalize` URL. 4. For each authorization, choose **one** of the offered challenge types and provision what it asks for. 5. POST to that challenge's URL to say it is ready. The server validates out of band and the authorization becomes `valid` (or `invalid`, and the order dies with it). 6. When all authorizations are `valid` the order becomes `ready`. POST a certification request to `finalize`. 7. Poll the order until it is `valid`, then fetch its `certificate` URL. The body is the end-entity certificate followed by the intermediate needed to build a path, typed `application/pem-certificate-chain`. ## The states you will actually see | Object | Status | What it means | |---|---|---| | order | `pending` | at least one authorization is not yet valid | | order | `ready` | every authorization is valid; waiting for `finalize` | | order | `processing` | the request was accepted and the authority is issuing | | order | `valid` | the `certificate` URL is populated | | order | `invalid` | an authorization failed or issuance was refused | | authorization | `pending` / `valid` / `invalid` | control not yet proven / proven / refused | | challenge | `pending` / `processing` / `valid` / `invalid` | queued / being checked / passed / failed | A client that reports "the order failed" without naming the state it stalled in has thrown away the only diagnostic the protocol gives it. ## What the flow deliberately does not do - It does not generate the key pair being certified, and it does not touch it apart from the certification request submitted at `finalize`. - It does not install or reload anything. Issuance and deployment are separate, and the gap between them is where most "but renewal ran fine" outages live. - It proves **control of a name**, at the moment of validation, and nothing about the organisation behind that name. - There is no renewal verb. Renewing is placing a new order for the same identifiers. ## Why the shape matters A chain of pop-up stores that opens a site for six weeks under its own name gets a certificate this way with nobody involved: the deploy job places an order, answers a challenge, collects a chain and moves on. The same shape is what lets the whole thing fail silently — an authorization that goes `invalid` because a name now points somewhere else produces no expired certificate today, only a job that quietly stops succeeding. Knowing which state the flow stops in is the difference between a fix and a guess.

  • Which resources can a client always expect to find in an ACME server's directory object?
    The directory itself is the configured entry point, and `newNonce` is the resource every signed request depends on, so those two are the fixed points. `newAccount`, `newOrder`, `revokeCert` and `keyChange` are advertised by servers that offer them, and `newAuthz` appears only where the server supports pre-authorization. A client reads the directory each run rather than assuming a path.
  • Why is the issued chain fetched from a separate URL instead of returned in the finalize response?
    Because issuance is asynchronous. The finalize response returns the order in `processing`; the authority may be logging the certificate, waiting on an internal signer, or queueing. The client polls the order until it is `valid`, at which point the order carries a `certificate` URL. Fetching it as a signed POST with an empty payload keeps the request authenticated rather than leaving the chain on an open URL.
  • An order covering four names reaches ready. How many challenges were completed?
    Four at most, one per authorization, and possibly fewer. Each identifier gets its own authorization, and each authorization needs exactly one of its offered challenges to succeed. A server may also carry an authorization that is already `valid` from a recent order for the same name, in which case no new challenge runs for it at all.

saying these in an interview costs you the question

  • Thinks one challenge covers every name in a multi-name order
  • Expects the certificate in the finalize response body
  • Believes finalize runs before the challenges
  • Assumes issuance is synchronous with no processing state
  • Says ACME installs and reloads the certificate for you
open as a page

In Certificate Transparency, how would your team learn that a publicly trusted certificate exists for a portal name nobody requested?

level: juniorimportance: must knowfreq 60%

basics

~20 s

Publicly trusted certificates are recorded in public append-only Certificate Transparency logs before clients will accept them, so a monitor watching your portal's DNS names reports any certificate issued for them, including one your team never asked for.

open as a page

What does a PKCS#10 certification request send to a certificate authority, and what stays behind with the applicant?

level: juniorimportance: must knowfreq 62%

basics

~10 s

A PKCS#10 certification request carries the subject name being asked for, the public key and any requested extensions, all self-signed with the matching private key. The private key is not sent to the authority.

open as a page

A server's private key file and its certificate are both committed to a public repository - which disclosure matters, and why?

level: juniorimportance: must knowfreq 68%

basics

~20 s

Only the private key matters. An end-entity certificate is handed to every client that connects, so publishing it costs essentially nothing; the private key is the one secret that proves a server is entitled to use that certificate.

open as a page

An end-entity certificate on a lift gate was revoked yesterday - what actually changed, and how would a client find out?

level: juniorimportance: must knowfreq 62%

basics

~20 s

Nothing in the certificate changed: the same bytes, the same issuer signature, the same notBefore and notAfter. The issuer publishes the withdrawal separately, as a signed revocation list or a signed responder answer, and a verifier learns of it only by fetching one.

open as a page

Where on a host does a client's trust in a certificate authority actually live, and what happens when an issuer is absent from it?

level: juniorimportance: must knowfreq 72%

basics

~20 s

Trust lives in a local anchor list - a file or database of root certificates the client was configured to accept. If the issuer at the top of what a server presents has no entry there, the client rejects it.

open as a page

In any X.509 certificate, leaf or CA, which fields make up the signed TBSCertificate and what does it bind?

level: juniorimportance: must knowfreq 80%

basics

~10 s

The TBSCertificate holds version, serialNumber, signature, issuer, validity as notBefore and notAfter, subject and SubjectPublicKeyInfo, plus v3 extensions. Signed as one unit, it binds that public key to those names for that window.

open as a page

In ACME, what does each of http-01, dns-01 and tls-alpn-01 prove, and which one can satisfy a wildcard identifier?

level: middleimportance: must knowfreq 72%

basics

~20 s

Each ACME challenge proves control of a different layer for one name: http-01 of the HTTP service on port 80, dns-01 of the zone that answers for the name, tls-alpn-01 of the TLS service on port 443. Only dns-01 satisfies a wildcard.

open as a page

What does a signed certificate timestamp from a Certificate Transparency log promise, and why is it not proof of inclusion?

level: middleimportance: must knowfreq 55%

basics

~20 s

A signed certificate timestamp is a log's signed promise to append that entry within its published Maximum Merge Delay. It proves submission and a log signature, not that the entry is in the tree — that needs an audit path against a signed tree head.

open as a page

A certificate authority offers domain-validated, organisation-validated and extended-validation certificates: what does each level actually verify?

level: middleimportance: must knowfreq 58%

basics

~20 s

Domain validation checks only that the applicant can act on the name. Organisation validation adds checks that a named legal entity exists and the applicant is connected to it, and extended validation does that under a stricter procedure with more identifiers in the subject.

open as a page

For a certificate nearing expiry, what distinguishes renewal from re-keying, and which does a suspected private-key compromise force?

level: middleimportance: must knowfreq 57%

basics

~20 s

Renewal issues a new certificate over the same public key; re-keying generates a new key pair first, so the new certificate carries a different SubjectPublicKeyInfo. A suspected key compromise forces re-keying, because renewal would recertify the compromised key.

open as a page

In certificate path processing, what is the difference between building a certification path and validating one?

level: middleimportance: must knowfreq 65%

basics

~20 s

Building is a search: it hunts through the certificates a verifier can reach for an ordered run from an end-entity certificate to an anchor it holds. Validating is a check that accepts or rejects one such run.

open as a page

On one host, one process accepts an end-entity certificate issued by your internal CA and another rejects it - why?

level: middleimportance: must knowfreq 58%

basics

~20 s

Several independent anchor lists coexist on one machine - an operating-system anchor store, a language runtime's own keystore file, a separate security-library certificate database, a browser root program's list. Installing the internal CA into one leaves the others untouched.

open as a page

Where must a server's identity appear in an X.509 end-entity certificate, and what became of the subject common name?

level: middleimportance: must knowfreq 68%

basics

~20 s

A server identity belongs in the subjectAltName extension, as a dNSName or iPAddress GeneralName. The common name inside the subject is descriptive text: the CN-ID fallback older rules allowed for identity matching has been removed.

open as a page

An end-entity certificate under ACME automation still expired at 02:00 on a Saturday — what must the renewal schedule get right?

level: seniorimportance: must knowfreq 58%

basics

~20 s

A renewal schedule must run against the served certificate's own notAfter with weeks of headroom, retry with jitter and backoff, and alert on renewal not having succeeded — while there is still runway — rather than on expiry itself.

open as a page

Every gate on the mountain still admits a certificate the authority revoked last week - why is that the designed default, and what actually closes it?

level: seniorimportance: must knowfreq 70%

basics

~20 s

Because clients soft-fail: when a status check cannot be completed they proceed. An attacker positioned to intercept the connection can also drop the status query, so live checking stops an accident but not an adversary. What closes it is a certificate that demands a stapled answer, pre-distributed revocation data, or short lifetimes.

open as a page

In ACME, why is every request signed by the account key rather than by the private key of the certificate being requested?

level: middleimportance: should knowfreq 44%

basics

~20 s

The account key authenticates the protocol conversation, not the certificate. It identifies which account placed an order, completed an authorization and may revoke, and it lets the certified key stay out of the automation entirely except for the request submitted at finalize.

open as a page

In Certificate Transparency, why does a CA log a precertificate with a critical poison extension rather than the certificate it will issue?

level: middleimportance: should knowfreq 42%

basics

~20 s

Embedding the returned timestamps changes the certificate's signed bytes, so the certificate cannot be logged before it exists. The authority logs a precertificate — the same content plus a critical poison extension, OID 1.3.6.1.4.1.11129.2.4.3, that makes it unusable — then issues the real one.

open as a page

A PKCS#10 request is signed with the very key being certified: what does that self-signature prove, and what does it not?

level: middleimportance: should knowfreq 45%

basics

~20 s

It proves the requester controlled the matching private key at the moment of signing, which stops anyone certifying a public key they cannot use. It proves nothing about entitlement to the requested name, nothing about identity, and nothing about later.

open as a page

An OCSP response arrives for one lift-pass certificate - what separates its protocol-level status from the certificate status it carries?

level: middleimportance: should knowfreq 44%

basics

~20 s

They are two different answers. OCSPResponseStatus reports whether the query itself worked - successful, malformedRequest, internalError, tryLater, sigRequired, unauthorized. Only a successful response carries a signed body with a per-certificate CertStatus of good, revoked or unknown.

open as a page

In TLS, what changes for revocation checking when the server fetches the signed OCSP answer itself and delivers it with its certificate?

level: middleimportance: should knowfreq 56%

basics

~20 s

The fetch moves off the client's path: the server queries the responder on a schedule and passes the responder-signed answer to the client. That removes a round trip, removes the privacy leak of the client naming the site to a third party, and survives a responder outage. It does not make an absent answer fatal.

open as a page

Why does path building fail when a verifier holds the trust anchor and the end-entity certificate but no intermediate?

level: middleimportance: should knowfreq 58%

basics

~20 s

Nothing joins the two. An intermediate CA signed the end-entity certificate, not the anchor, so with that intermediate absent no candidate has a subject matching the leaf's issuer and a key that verifies its signature.

open as a page

What does marking an X.509 v3 extension critical require of a verifier, and why is basicConstraints marked critical?

level: middleimportance: should knowfreq 52%

basics

~20 s

Critical means a reader that does not recognise the extension must reject the certificate instead of ignoring it. basicConstraints is critical in a CA certificate because its cA boolean decides whether that certificate may act as an issuer at all.

open as a page

Your research portal must deliver signed certificate timestamps to TLS clients — which three delivery paths does Certificate Transparency define?

level: seniorimportance: should knowfreq 45%

basics

~20 s

Three: an SCT list embedded in the certificate as an X.509 extension at OID 1.3.6.1.4.1.11129.2.4.2, the signed_certificate_timestamp TLS extension (type 18) returned by the server, and an SCT list carried inside a stapled certificate status response.

open as a page

A certification request asks for extensions, yet the issued certificate carries different values: why is the authority's profile what decides?

level: seniorimportance: should knowfreq 42%

basics

~20 s

The extensionRequest attribute is an application, not an instruction. The issuing authority applies its own certificate profile, keeping only names it validated, fixing usage extensions to its own values and choosing serial number and validity itself.

open as a page

An issuing authority's signing key is held in a hardware module and cannot be exported - what does that stop, and what does it not?

level: seniorimportance: should knowfreq 46%

basics

~20 s

It stops the key being copied out, so no attacker can run a duplicate authority you cannot see. It does not stop the key being used: whoever controls the signing service in front of the module obtains genuine certificates for as long as that access lasts.

open as a page

While walking a certification path, what does a verifier check in each CA certificate about its authority to issue the next one?

level: seniorimportance: should knowfreq 46%

basics

~10 s

Three things per hop: basicConstraints present with cA set to TRUE, keyCertSign asserted if a keyUsage extension is present at all, and pathLenConstraint, which caps how many non-self-issued certificates may still follow.

open as a page

Your client pins a server's key rather than trusting the whole anchor list - what exactly should the pin cover, and why?

level: seniorimportance: should knowfreq 46%

basics

~20 s

Pin a digest over the DER-encoded SubjectPublicKeyInfo - the public key - not a fingerprint of the whole certificate. A certificate fingerprint changes at every renewal; an SPKI fingerprint survives a renewal that reuses the key pair.

open as a page

A monitor keys leaf certificates on serialNumber alone and treats authorityKeyIdentifier as proof of the issuer — what breaks?

level: seniorimportance: should knowfreq 40%

basics

~20 s

Serial numbers are unique only per issuing authority, so certificates from different CAs collide; the unique key is issuer plus serialNumber. authorityKeyIdentifier is an unverified hint written into the certificate, not evidence of who signed it.

open as a page

showing 1–30 of 40