Problem Statement
Fulcio certificates are written to a Certificate Transparency (CT) log on issuance. Note that this log is different than Rekor - Rekor accepts artifacts, the CT log only accepts certificates that chain up to Fulcio's root certificate. The CT log returns an "SCT" (signed certificate timestamp) that represents a promise to include the certificate in the log. Artifact verifiers that are trusting Fulcio certificates should verify the signature on the SCT. In doing so, they will have confidence that the certificate is written to a public log, and therefore is auditable (for example, I might monitor the CT log for my identity, to know if there's been a mis-issuance).
For the production Fulcio instance, we embed SCTs in the certificates in a custom X.509 extension, as defined by RFC6962. Note that private Fulcio instances may return the SCT as a header rather than in the extension, but consider supporting that with a lower priority since it's not in production.
In addition to verifying on artifact verification, if Kyverno does any signing, I would recommend verifying there too when Fulcio returns an issued certificate.
Code snippets:
Solution Description
I would recommend adding SCT verification.
Alternatives
No response
Additional Context
No response
Slack discussion
No response
Research
Problem Statement
Fulcio certificates are written to a Certificate Transparency (CT) log on issuance. Note that this log is different than Rekor - Rekor accepts artifacts, the CT log only accepts certificates that chain up to Fulcio's root certificate. The CT log returns an "SCT" (signed certificate timestamp) that represents a promise to include the certificate in the log. Artifact verifiers that are trusting Fulcio certificates should verify the signature on the SCT. In doing so, they will have confidence that the certificate is written to a public log, and therefore is auditable (for example, I might monitor the CT log for my identity, to know if there's been a mis-issuance).
For the production Fulcio instance, we embed SCTs in the certificates in a custom X.509 extension, as defined by RFC6962. Note that private Fulcio instances may return the SCT as a header rather than in the extension, but consider supporting that with a lower priority since it's not in production.
In addition to verifying on artifact verification, if Kyverno does any signing, I would recommend verifying there too when Fulcio returns an issued certificate.
Code snippets:
VerifyEmbeddedSCTwith the certificate and its chainSolution Description
I would recommend adding SCT verification.
Alternatives
No response
Additional Context
No response
Slack discussion
No response
Research