Skip to content

Commit 2776d88

Browse files
authored
Deprecate createcerts (#1103)
Using createcerts to have the Fulcio chart automatically generate its roots for the fileca certificate authority mode is deprecated. Instead, users should generate their key material out of band. This way, the CTLog chart can share the Fulcio root in its configuration instead of implicitly trusting Fulcio's rootCerts endpoint. Signed-off-by: Colleen Murphy <[email protected]>
1 parent 5e1240a commit 2776d88

File tree

4 files changed

+40
-2
lines changed

4 files changed

+40
-2
lines changed

charts/fulcio/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description: |
55
66
type: application
77

8-
version: 2.6.16
8+
version: 2.7.0
99
appVersion: 1.8.3
1010

1111
keywords:

charts/fulcio/README.md

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<!-- This README.md is generated. Please edit README.md.gotmpl -->
44

5-
![Version: 2.6.16](https://img.shields.io/badge/Version-2.6.16-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.8.3](https://img.shields.io/badge/AppVersion-1.8.3-informational?style=flat-square)
5+
![Version: 2.7.0](https://img.shields.io/badge/Version-2.7.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.8.3](https://img.shields.io/badge/AppVersion-1.8.3-informational?style=flat-square)
66

77
Fulcio is a free code signing Certificate Authority, built to make short-lived certificates available to anyone.
88

@@ -221,3 +221,20 @@ To enabled access from external resources, an Ingress resource is created. The c
221221
> grpc:
222222
> enabled: false
223223
> ```
224+
225+
## Key Management for Certificate Authority
226+
227+
Fulcio supports the following options for certificate authority backends: googleca, pkcs11ca, aws-hsm-root-ca-path, fileca, kmsca. For all except fileca, set the appropriate values in values.yaml to configure the CA roots for the given backend.
228+
229+
For fileca, the signing keys and certificates need to be generated manually and uploaded as a Secret that the Fulcio deployment can mount. For example:
230+
231+
```
232+
pass=mysecurepassword
233+
openssl ecparam -name prime256v1 -genkey | openssl pkcs8 -passout "pass:${pass}" -topk8 -out "/pki/key.pem" # generate the signing key
234+
openssl req -x509 -new -key /pki/key.pem -out /pki/cert.pem -sha256 -days 100 -subj "/O=test/CN=self.signed.ca" -passin "pass:${pass}" # generate the self-signed certificate
235+
kubectl -n fulcio-system create secret generic --from-file=private=/pki/key.pem --from-file=cert=/pki/cert.pem --from-literal=password=$pass fulcio-server-secret # upload to Kubernetes
236+
```
237+
238+
Alternatively, use a secure system like [ExternalSecret](https://external-secrets.io/v0.4.4/api-externalsecret/) to safely store and populate key material.
239+
240+
By default, createcerts.enabled is set to true and will automatically generate key material. This setting is deprecated and it is recommended to change this setting to false and generate your own key material. This way, the root certificate can be shared out of band with the CTlog chart and it does not need to implicitly trust the Fulcio HTTP server to provide the correct root.

charts/fulcio/README.md.gotmpl

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,20 @@ To enabled access from external resources, an Ingress resource is created. The c
106106
> grpc:
107107
> enabled: false
108108
> ```
109+
110+
## Key Management for Certificate Authority
111+
112+
Fulcio supports the following options for certificate authority backends: googleca, pkcs11ca, aws-hsm-root-ca-path, fileca, kmsca. For all except fileca, set the appropriate values in values.yaml to configure the CA roots for the given backend.
113+
114+
For fileca, the signing keys and certificates need to be generated manually and uploaded as a Secret that the Fulcio deployment can mount. For example:
115+
116+
```
117+
pass=mysecurepassword
118+
openssl ecparam -name prime256v1 -genkey | openssl pkcs8 -passout "pass:${pass}" -topk8 -out "/pki/key.pem" # generate the signing key
119+
openssl req -x509 -new -key /pki/key.pem -out /pki/cert.pem -sha256 -days 100 -subj "/O=test/CN=self.signed.ca" -passin "pass:${pass}" # generate the self-signed certificate
120+
kubectl -n fulcio-system create secret generic --from-file=private=/pki/key.pem --from-file=cert=/pki/cert.pem --from-literal=password=$pass fulcio-server-secret # upload to Kubernetes
121+
```
122+
123+
Alternatively, use a secure system like [ExternalSecret](https://external-secrets.io/v0.4.4/api-externalsecret/) to safely store and populate key material.
124+
125+
By default, createcerts.enabled is set to true and will automatically generate key material. This setting is deprecated and it is recommended to change this setting to false and generate your own key material. This way, the root certificate can be shared out of band with the CTlog chart and it does not need to implicitly trust the Fulcio HTTP server to provide the correct root.

charts/fulcio/templates/NOTES.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{{- if (.Values.createcerts).enabled -}}
2+
**DEPRECATED**: createcerts is deprecated. If using the fileca certificate authority, create the fulcio-server-secrets secret containing the private signing key, encryption password, and certiticate authority manually or using a secure system like External Secret (see README.md for more information).
3+
To dismiss this message, set createcerts.enabled=false in your values.yaml.
4+
{{- end -}}

0 commit comments

Comments
 (0)