You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
foremanctl supports Subject Alternative Names (SANs) for multi-domain certificates:
57
+
58
+
```bash
59
+
# Generate certificates with multiple DNS names
60
+
foremanctl deploy \
61
+
--certificate-cname api.example.com \
62
+
--certificate-cname foreman.example.com \
63
+
--certificate-cname satellite.example.com
64
+
```
65
+
66
+
When CNAMEs are specified, certificates will include all names in the Subject Alternative Name field, allowing the same certificate to be valid for multiple hostnames.
67
+
54
68
### Current Limitations
55
69
56
-
- Only supports single hostname (no multiple DNS names)
57
70
- Cannot provide custom certificate files during deployment
58
71
- Fixed 20-year certificate validity period
59
72
- Limited certificate customization options
60
73
61
-
---
62
-
63
74
## Internal Design
64
75
65
76
### Architecture
@@ -89,7 +100,8 @@ src/roles/certificates/
89
100
90
101
2.**Host Certificate Issuance** (for each hostname in `certificates_hostnames`):
91
102
- Generate 4096-bit RSA private key
92
-
- Create certificate signing request (CSR)
103
+
- Create certificate signing request (CSR) with Subject Alternative Names
104
+
- Include primary hostname and any additional CNAMEs from `certificate_cname`
93
105
- Sign certificate with CA (includes serverAuth/clientAuth extensions)
94
106
- Generate both server and client certificates per hostname
95
107
@@ -146,5 +158,6 @@ The `certificate_checks` role uses `foreman-certificate-check` binary to validat
146
158
147
159
**OpenSSL Configuration:**
148
160
- Custom configuration template supports SAN extensions
149
-
- Single DNS entry per certificate: `subjectAltName = DNS:{{ certificates_hostname }}`
150
-
- Uses OpenSSL's `req` and `ca` commands for generation and signing
161
+
- Multiple DNS entries supported: `subjectAltName = DNS:{{ certificates_hostname }}{% for cname in certificate_cname %},DNS:{{ cname }}{% endfor %}`
162
+
- Uses OpenSSL's `req` and `ca` commands for generation and signing
163
+
- CNAMEs configured via `certificate_cname` variable (list of additional DNS names)
0 commit comments