sigstore/fulcio

GitHub: sigstore/fulcio

Fulcio 是 Sigstore 生态的免费代码签名 CA,基于 OIDC 身份颁发短期证书,实现无需管理长期私钥的软件签名。

Stars: 810 | Forks: 168

[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/sigstore/fulcio/badge)](https://api.securityscorecards.dev/projects/github.com/sigstore/fulcio)

Fulcio logo

# Fulcio _免费使用的代码签名 CA_ Fulcio 是一个免费使用的证书颁发机构,用于为 OpenID Connect (OIDC) 身份(例如电子邮件地址)颁发代码签名证书。 Fulcio 仅颁发有效期为 10 分钟的短期证书。 ## 公共实例 Fulcio 已正式发布(General Availability),提供 99.5% 的可用性 SLO, 并遵循 [semver 规则](https://semver.org/) 来保证 API 稳定性。 关于 Fulcio 公共实例的运行时间数据,请参阅 [https://status.sigstore.dev](https://status.sigstore.dev)。 可以从 `TrustBundle` API 获取 Fulcio 的证书链,例如对于公共实例 ([https://fulcio.sigstore.dev](https://fulcio.sigstore.dev/api/v2/trustBundle))。要验证公共实例, 您必须使用 Sigstore 来自 [sigstore/root-signing](https://github.com/sigstore/root-signing) 仓库的 [TUF](https://theupdateframework.io/) 根来验证该链。 为此,请安装并使用 [go-tuf](https://github.com/theupdateframework/go-tuf) 的 CLI 工具: ``` $ go install github.com/theupdateframework/go-tuf/cmd/tuf-client@latest ``` 然后,获取 Sigstore 的可信根密钥。由于存在向后不兼容的变更, 您将使用 Sigstore TUF 根的第 5 次迭代来启动信任根。 ``` curl -o sigstore-root.json https://raw.githubusercontent.com/sigstore/root-signing/main/metadata/root_history/5.root.json ``` 使用之前获取的根和远程仓库 https://tuf-repo-cdn.sigstore.dev 初始化 TUF 客户端, 并获取当前的 Fulcio 根证书 `fulcio_v1.crt.pem` 和中间证书 `fulcio_intermediate_v1.crt.pem`。 ``` $ tuf-client init https://tuf-repo-cdn.sigstore.dev sigstore-root.json $ tuf-client get https://tuf-repo-cdn.sigstore.dev fulcio_v1.crt.pem -----BEGIN CERTIFICATE----- MIIB9zCCAXygAwIBAgIUALZNAPFdxHPwjeDloDwyYChAO/4wCgYIKoZIzj0EAwMw KjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MREwDwYDVQQDEwhzaWdzdG9yZTAeFw0y MTEwMDcxMzU2NTlaFw0zMTEwMDUxMzU2NThaMCoxFTATBgNVBAoTDHNpZ3N0b3Jl LmRldjERMA8GA1UEAxMIc2lnc3RvcmUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAT7 XeFT4rb3PQGwS4IajtLk3/OlnpgangaBclYpsYBr5i+4ynB07ceb3LP0OIOZdxex X69c5iVuyJRQ+Hz05yi+UF3uBWAlHpiS5sh0+H2GHE7SXrk1EC5m1Tr19L9gg92j YzBhMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRY wB5fkUWlZql6zJChkyLQKsXF+jAfBgNVHSMEGDAWgBRYwB5fkUWlZql6zJChkyLQ KsXF+jAKBggqhkjOPQQDAwNpADBmAjEAj1nHeXZp+13NWBNa+EDsDP8G1WWg1tCM WP/WHPqpaVo0jhsweNFZgSs0eE7wYI4qAjEA2WB9ot98sIkoF3vZYdd3/VtWB5b9 TNMea7Ix/stJ5TfcLLeABLE4BNJOsQ4vnBHJ -----END CERTIFICATE----- $ tuf-client get https://tuf-repo-cdn.sigstore.dev fulcio_intermediate_v1.crt.pem -----BEGIN CERTIFICATE----- MIICGjCCAaGgAwIBAgIUALnViVfnU0brJasmRkHrn/UnfaQwCgYIKoZIzj0EAwMw KjEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MREwDwYDVQQDEwhzaWdzdG9yZTAeFw0y MjA0MTMyMDA2MTVaFw0zMTEwMDUxMzU2NThaMDcxFTATBgNVBAoTDHNpZ3N0b3Jl LmRldjEeMBwGA1UEAxMVc2lnc3RvcmUtaW50ZXJtZWRpYXRlMHYwEAYHKoZIzj0C AQYFK4EEACIDYgAE8RVS/ysH+NOvuDZyPIZtilgUF9NlarYpAd9HP1vBBH1U5CV7 7LSS7s0ZiH4nE7Hv7ptS6LvvR/STk798LVgMzLlJ4HeIfF3tHSaexLcYpSASr1kS 0N/RgBJz/9jWCiXno3sweTAOBgNVHQ8BAf8EBAMCAQYwEwYDVR0lBAwwCgYIKwYB BQUHAwMwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQU39Ppz1YkEZb5qNjp KFWixi4YZD8wHwYDVR0jBBgwFoAUWMAeX5FFpWapesyQoZMi0CrFxfowCgYIKoZI zj0EAwMDZwAwZAIwPCsQK4DYiZYDPIaDi5HFKnfxXx6ASSVmERfsynYBiX2X6SJR nZU84/9DZdnFvvxmAjBOt6QpBlc4J/0DxvkTCqpclvziL6BCCPnjdlIB3Pu3BxsP mygUY7Ii2zbdCdliiow= -----END CERTIFICATE----- ``` ### Certificate Maker Certificate Maker 是一个用于创建 [Fulcio 兼容证书链](docs/certificate-specification.md) 的工具。它支持: * 两级链: * root → leaf * root → intermediate * 三级链: * root → intermediate → leaf * 多种 KMS 提供商 (AWS, Google Cloud, Azure, HashiCorp Vault) 有关详细的使用说明和示例,请参阅 [Certificate Maker 文档](docs/certificate-maker.md)。 ### 验证发布版本 您还可以使用工件签名密钥验证已签名的发布版本 (`fulcio-.sig`): ``` tuf-client get https://tuf-repo-cdn.sigstore.dev artifact.pub > artifact.pub curl -o fulcio-release.sig -L https://github.com/sigstore/fulcio/releases/download//fulcio-.sig base64 -d fulcio-release.sig > fulcio-release.sig.decoded curl -o fulcio-release -L https://github.com/sigstore/fulcio/releases/download//fulcio- openssl dgst -sha256 -verify artifact.pub -signature fulcio-release.sig.decoded fulcio-release ``` ## API API 定义在[这里](./fulcio.proto)。可以通过 [HTTP](https://www.sigstore.dev/swagger/?urls.primaryName=Fulcio) 或 gRPC 访问该 API。 ## 证书透明度 Fulcio 会将颁发的证书发布到证书透明度日志(CT log)。 该日志托管在 `https://ctfe.sigstore.dev/test`。每年,该日志将更新 为新的日志 ID,例如 `https://ctfe.sigstore.dev/2022`。 该日志提供 [RFC 6962](https://datatracker.ietf.org/doc/rfc6962/) 中记录的 API。 我们鼓励审计人员监控此日志的完整性和特定身份。 例如,审计人员可以监控为某些电子邮件地址颁发证书的时间, 这将检测到用户身份的配置错误或潜在受损。 ## 安全 请遵循 sigstore 的[安全流程](https://github.com/sigstore/.github/blob/main/SECURITY.md)报告任何漏洞。 ## 信息 Fulcio 作为 [`sigstore`](https://sigstore.dev) 项目的一部分进行开发。 我们还使用一个 [slack 频道](https://sigstore.slack.com)! 要查看关于 Slack 和其他沟通渠道的更多信息,请查看[社区仓库](https://github.com/sigstore/community?tab=readme-ov-file#slack) ## 更多文档 除了此 README 文件外,docs 文件夹还包含其他文档: - **certificate-specification.md**。此文件包含对根证书、中间证书和已颁发证书的要求。该文档适用于 Fulcio 的所有实例,包括生产实例和所有私有实例。 - **ctlog.md**。证书透明度日志信息,包括签名证书时间戳的信息以及 CT 日志的分片策略。 - **how-certifcate-issuing-works.md**。本文档介绍了颁发代码签名证书的过程。 - **hsm-support.md**。将 Fulcio 与支持 pkcs11 的设备(如 SoftHSM)配合使用。 - **oid-info.md**。Sigstore OID 信息。 - **security-model.md**。Fulcio 的安全模型以及关于短期证书的讨论。 - **setup.md**。搭建本地 Fulcio 实例 如果您要更改这些主题中的任何一个,请确保同时编辑上面列出的相应文件。
标签:Azure 安全, CA, CVE, DevSecOps, EVTX分析, EVTX分析, Fulcio, Go语言, JSONLines, OIDC, OpenID Connect, Python工具, Sigstore, TUF, 上游代理, 代码签名, 公钥基础设施, 数字签名, 日志审计, 短期证书, 程序破解, 证书颁发机构, 软件完整性, 零信任