ACME Default Certificate
Co-authored-by: Ludovic Fernandez <ldez@users.noreply.github.com> Co-authored-by: Julien Salleyron <julien.salleyron@gmail.com>
This commit is contained in:
parent
693d5da1b9
commit
a002ccfce3
22 changed files with 767 additions and 253 deletions
|
@ -157,7 +157,75 @@ data:
|
|||
tls.key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0=
|
||||
```
|
||||
|
||||
If no default certificate is provided, Traefik generates and uses a self-signed certificate.
|
||||
If no `defaultCertificate` is provided, Traefik will use the generated one.
|
||||
|
||||
### ACME Default Certificate
|
||||
|
||||
You can configure Traefik to use an ACME provider (like Let's Encrypt) to generate the default certificate.
|
||||
The configuration to resolve the default certificate should be defined in a TLS store:
|
||||
|
||||
!!! important "Precedence with the `defaultGeneratedCert` option"
|
||||
|
||||
The `defaultGeneratedCert` definition takes precedence over the ACME default certificate configuration.
|
||||
|
||||
```yaml tab="File (YAML)"
|
||||
# Dynamic configuration
|
||||
|
||||
tls:
|
||||
stores:
|
||||
default:
|
||||
defaultGeneratedCert:
|
||||
resolver: myresolver
|
||||
domain:
|
||||
main: example.org
|
||||
sans:
|
||||
- foo.example.org
|
||||
- bar.example.org
|
||||
```
|
||||
|
||||
```toml tab="File (TOML)"
|
||||
# Dynamic configuration
|
||||
|
||||
[tls.stores]
|
||||
[tls.stores.default.defaultGeneratedCert]
|
||||
resolver = "myresolver"
|
||||
[tls.stores.default.defaultGeneratedCert.domain]
|
||||
main = "example.org"
|
||||
sans = ["foo.example.org", "bar.example.org"]
|
||||
```
|
||||
|
||||
```yaml tab="Kubernetes"
|
||||
apiVersion: traefik.containo.us/v1alpha1
|
||||
kind: TLSStore
|
||||
metadata:
|
||||
name: default
|
||||
namespace: default
|
||||
|
||||
spec:
|
||||
defaultGeneratedCert:
|
||||
resolver: myresolver
|
||||
domain:
|
||||
main: example.org
|
||||
sans:
|
||||
- foo.example.org
|
||||
- bar.example.org
|
||||
```
|
||||
|
||||
```yaml tab="Docker"
|
||||
## Dynamic configuration
|
||||
labels:
|
||||
- "traefik.tls.stores.default.defaultgeneratedcert.resolver=myresolver"
|
||||
- "traefik.tls.stores.default.defaultgeneratedcert.domain.main=example.org"
|
||||
- "traefik.tls.stores.default.defaultgeneratedcert.domain.sans=foo.example.org, bar.example.org"
|
||||
```
|
||||
|
||||
```json tab="Marathon"
|
||||
labels: {
|
||||
"traefik.tls.stores.default.defaultgeneratedcert.resolver": "myresolver",
|
||||
"traefik.tls.stores.default.defaultgeneratedcert.domain.main": "example.org",
|
||||
"traefik.tls.stores.default.defaultgeneratedcert.domain.sans": "foo.example.org, bar.example.org",
|
||||
}
|
||||
```
|
||||
|
||||
## TLS Options
|
||||
|
||||
|
|
|
@ -201,3 +201,13 @@
|
|||
- "traefik.udp.routers.udprouter1.entrypoints=foobar, foobar"
|
||||
- "traefik.udp.routers.udprouter1.service=foobar"
|
||||
- "traefik.udp.services.udpservice01.loadbalancer.server.port=foobar"
|
||||
- "traefik.tls.stores.Store0.defaultcertificate.certfile=foobar"
|
||||
- "traefik.tls.stores.Store0.defaultcertificate.keyfile=foobar"
|
||||
- "traefik.tls.stores.Store0.defaultgeneratedcert.domain.main=foobar"
|
||||
- "traefik.tls.stores.Store0.defaultgeneratedcert.domain.sans=foobar, foobar"
|
||||
- "traefik.tls.stores.Store0.defaultgeneratedcert.resolver=foobar"
|
||||
- "traefik.tls.stores.Store1.defaultcertificate.certfile=foobar"
|
||||
- "traefik.tls.stores.Store1.defaultcertificate.keyfile=foobar"
|
||||
- "traefik.tls.stores.Store1.defaultgeneratedcert.domain.main=foobar"
|
||||
- "traefik.tls.stores.Store1.defaultgeneratedcert.domain.sans=foobar, foobar"
|
||||
- "traefik.tls.stores.Store1.defaultgeneratedcert.resolver=foobar"
|
||||
|
|
|
@ -463,7 +463,17 @@
|
|||
[tls.stores.Store0.defaultCertificate]
|
||||
certFile = "foobar"
|
||||
keyFile = "foobar"
|
||||
[tls.stores.Store0.defaultGeneratedCert]
|
||||
resolver = "foobar"
|
||||
[tls.stores.Store0.defaultGeneratedCert.domain]
|
||||
main = "foobar"
|
||||
sans = ["foobar", "foobar"]
|
||||
[tls.stores.Store1]
|
||||
[tls.stores.Store1.defaultCertificate]
|
||||
certFile = "foobar"
|
||||
keyFile = "foobar"
|
||||
[tls.stores.Store1.defaultGeneratedCert]
|
||||
resolver = "foobar"
|
||||
[tls.stores.Store1.defaultGeneratedCert.domain]
|
||||
main = "foobar"
|
||||
sans = ["foobar", "foobar"]
|
||||
|
|
|
@ -518,7 +518,21 @@ tls:
|
|||
defaultCertificate:
|
||||
certFile: foobar
|
||||
keyFile: foobar
|
||||
defaultGeneratedCert:
|
||||
resolver: foobar
|
||||
domain:
|
||||
main: foobar
|
||||
sans:
|
||||
- foobar
|
||||
- foobar
|
||||
Store1:
|
||||
defaultCertificate:
|
||||
certFile: foobar
|
||||
keyFile: foobar
|
||||
defaultGeneratedCert:
|
||||
resolver: foobar
|
||||
domain:
|
||||
main: foobar
|
||||
sans:
|
||||
- foobar
|
||||
- foobar
|
||||
|
|
|
@ -1870,6 +1870,27 @@ spec:
|
|||
required:
|
||||
- secretName
|
||||
type: object
|
||||
defaultGeneratedCert:
|
||||
description: DefaultGeneratedCert defines the default generated certificate
|
||||
configuration.
|
||||
properties:
|
||||
domain:
|
||||
description: Domain is the domain definition for the DefaultCertificate.
|
||||
properties:
|
||||
main:
|
||||
description: Main defines the main domain name.
|
||||
type: string
|
||||
sans:
|
||||
description: SANs defines the subject alternative domain names.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
type: object
|
||||
resolver:
|
||||
description: Resolver is the name of the resolver that will be
|
||||
used to issue the DefaultCertificate.
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
required:
|
||||
- metadata
|
||||
|
|
|
@ -319,8 +319,16 @@
|
|||
| `traefik/tls/options/Options1/sniStrict` | `true` |
|
||||
| `traefik/tls/stores/Store0/defaultCertificate/certFile` | `foobar` |
|
||||
| `traefik/tls/stores/Store0/defaultCertificate/keyFile` | `foobar` |
|
||||
| `traefik/tls/stores/Store0/defaultGeneratedCert/domain/main` | `foobar` |
|
||||
| `traefik/tls/stores/Store0/defaultGeneratedCert/domain/sans/0` | `foobar` |
|
||||
| `traefik/tls/stores/Store0/defaultGeneratedCert/domain/sans/1` | `foobar` |
|
||||
| `traefik/tls/stores/Store0/defaultGeneratedCert/resolver` | `foobar` |
|
||||
| `traefik/tls/stores/Store1/defaultCertificate/certFile` | `foobar` |
|
||||
| `traefik/tls/stores/Store1/defaultCertificate/keyFile` | `foobar` |
|
||||
| `traefik/tls/stores/Store1/defaultGeneratedCert/domain/main` | `foobar` |
|
||||
| `traefik/tls/stores/Store1/defaultGeneratedCert/domain/sans/0` | `foobar` |
|
||||
| `traefik/tls/stores/Store1/defaultGeneratedCert/domain/sans/1` | `foobar` |
|
||||
| `traefik/tls/stores/Store1/defaultGeneratedCert/resolver` | `foobar` |
|
||||
| `traefik/udp/routers/UDPRouter0/entryPoints/0` | `foobar` |
|
||||
| `traefik/udp/routers/UDPRouter0/entryPoints/1` | `foobar` |
|
||||
| `traefik/udp/routers/UDPRouter0/service` | `foobar` |
|
||||
|
|
|
@ -201,3 +201,13 @@
|
|||
"traefik.udp.routers.udprouter1.entrypoints": "foobar, foobar",
|
||||
"traefik.udp.routers.udprouter1.service": "foobar",
|
||||
"traefik.udp.services.udpservice01.loadbalancer.server.port": "foobar",
|
||||
"traefik.tls.stores.Store0.defaultcertificate.certfile": "foobar",
|
||||
"traefik.tls.stores.Store0.defaultcertificate.keyfile": "foobar",
|
||||
"traefik.tls.stores.Store0.defaultgeneratedcert.domain.main": "foobar",
|
||||
"traefik.tls.stores.Store0.defaultgeneratedcert.domain.sans": "foobar, foobar",
|
||||
"traefik.tls.stores.Store0.defaultgeneratedcert.resolver": "foobar",
|
||||
"traefik.tls.stores.Store1.defaultcertificate.certfile": "foobar",
|
||||
"traefik.tls.stores.Store1.defaultcertificate.keyfile": "foobar",
|
||||
"traefik.tls.stores.Store1.defaultgeneratedcert.domain.main": "foobar",
|
||||
"traefik.tls.stores.Store1.defaultgeneratedcert.domain.sans": "foobar, foobar",
|
||||
"traefik.tls.stores.Store1.defaultgeneratedcert.resolver": "foobar",
|
||||
|
|
|
@ -63,6 +63,27 @@ spec:
|
|||
required:
|
||||
- secretName
|
||||
type: object
|
||||
defaultGeneratedCert:
|
||||
description: DefaultGeneratedCert defines the default generated certificate
|
||||
configuration.
|
||||
properties:
|
||||
domain:
|
||||
description: Domain is the domain definition for the DefaultCertificate.
|
||||
properties:
|
||||
main:
|
||||
description: Main defines the main domain name.
|
||||
type: string
|
||||
sans:
|
||||
description: SANs defines the subject alternative domain names.
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
type: object
|
||||
resolver:
|
||||
description: Resolver is the name of the resolver that will be
|
||||
used to issue the DefaultCertificate.
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
required:
|
||||
- metadata
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue