Skip to content

Commit 9f38d9a

Browse files
committed
Add/update docs for new trust-manager features
Signed-off-by: Erik Godding Boye <egboye@gmail.com>
1 parent 2c72ba0 commit 9f38d9a

File tree

2 files changed

+34
-11
lines changed

2 files changed

+34
-11
lines changed

.spelling

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,6 +447,7 @@ thiscantbeserious
447447
tolerations
448448
tomasfreund
449449
treydock
450+
truststore
450451
ulrichgi
451452
uncomment
452453
unencrypted
@@ -458,6 +459,7 @@ upstream
458459
userinfo
459460
vhosakot
460461
v0.5.0
462+
v0.7.0
461463
v0.16
462464
v0.23.1
463465
v1

content/docs/trust/trust-manager/README.md

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ and enables cluster administrators to easily automate providing a secure bundle
2121
to worry about rebuilding containers to update trust stores.
2222

2323
It's designed to complement cert-manager and works well when consuming CA certificates from a
24-
cert-manager `Issuer` or `ClusterIssuer` but can be used entirely independently from cert-manager
24+
cert-manager `Issuer` or `ClusterIssuer` but can be used entirely independently of cert-manager
2525
if needed.
2626

2727
## Usage
@@ -70,12 +70,15 @@ spec:
7070
# Sync the bundle to a ConfigMap called `my-org.com` in every namespace which
7171
# has the label "linkerd.io/inject=enabled"
7272
# All ConfigMaps will include a PEM-formatted bundle, here named "root-certs.pem"
73-
# and in this case we also request a binary JKS formatted bundle, here named "bundle.jks"
73+
# and in this case we also request binary formatted bundles in JKS and PKCS#12 formats,
74+
# here named "bundle.jks" and "bundle.p12".
7475
configMap:
7576
key: "root-certs.pem"
7677
additionalFormats:
7778
jks:
7879
key: "bundle.jks"
80+
pkcs12:
81+
key: "bundle.p12"
7982
namespaceSelector:
8083
matchLabels:
8184
linkerd.io/inject: "enabled"
@@ -88,18 +91,27 @@ spec:
8891
- `inLine` - a manually specified string containing at least one certificate
8992
- `useDefaultCAs` - usually, a bundle of publicly trusted certificates
9093

91-
These sources, along with the single currently supported target type (`configMap`)
92-
are documented in the trust-manager [API reference documentation](./api-reference.md).
94+
`ConfigMap` is the default target resource type, but trust-manager also supports `Secret` as targets
95+
(since trust-manager v0.7.0), but that feature has to be explicitly enabled on the controller.
96+
97+
All sources and target options are documented in the trust-manager [API reference documentation](./api-reference.md).
9398

9499
#### Targets
95100

96-
All `Bundle` targets are written to `ConfigMap`s whose name matches that of the `Bundle`, and every
97-
target has a PEM-formatted bundle included.
101+
All `Bundle` targets are written to `ConfigMap`s (and/or `Secret`s) whose name matches that of the
102+
`Bundle`, and every target has a PEM-formatted bundle included.
103+
104+
Users can also optionally choose to write JKS/PKCS#12 formatted binary truststore(s) to the target.
105+
JKS is supported since trust-manager v0.5.0, PKCS#12 since trust-manager v0.7.0.
98106

99-
Users can also optionally - as of trust-manager v0.5.0 - choose to write a JKS formatted binary
100-
bundle to the target. We understand that most Java applications tend to require a password on JKS
101-
files (even though trust bundles don't contain secrets), so all trust-manager JKS bundles use the
102-
default password `changeit`.
107+
We understand that any binary truststore require a password, even though trust bundles don't contain
108+
secrets. Both JKS and PKCS#12 uses weak encryption primitives, so a truststore (or keystore) will NOT
109+
be protected by a password alone, and needs to be protected by additional measures.
110+
Please understand that trust-manager provides these binary truststore formats to support legacy
111+
applications which do not support other formats.
112+
At present passwords to truststores provided by trust-manager are hard-coded to `changeit` for JKS and
113+
`"""` (empty string; so called password-less) for PKCS#12 but this might be configurable on bundles
114+
in a future release of trust-manager.
103115

104116
#### Namespace Selector
105117

@@ -132,7 +144,16 @@ helm upgrade -i -n cert-manager cert-manager jetstack/cert-manager --set install
132144
helm upgrade -i -n cert-manager trust-manager jetstack/trust-manager --wait
133145
```
134146

135-
### approver-policy Integration
147+
#### Enable Secret targets
148+
149+
`Secret` targets are supported as of trust-manager v0.7.0, but needs to be explicitly enabled on the controller.
150+
The feature can be enabled with a Helm value `--set secretTargets.enabled=true`, but since the controller needs
151+
RBAC to secrets, you also need to set `secretTargets.authorizedSecretsAll` or `secretTargets.authorizedSecrets`.
152+
Please consult the
153+
[trust-manager Helm chart docs](https://github.com/cert-manager/trust-manager/blob/main/deploy/charts/trust-manager/README.md#values)
154+
for details and trade-offs.
155+
156+
#### approver-policy Integration
136157

137158
If you're running [approver-policy](../../policy/approval/approver-policy/README.md) then cert-manager's default approver will be disabled which will mean that
138159
trust-manager's webhook certificate will - by default - block when you install the Helm chart until it's manually approved.

0 commit comments

Comments
 (0)