etcdmain, pkg: Support peer and client TLS auth based on SAN fields.
Etcd currently supports validating peers based on their TLS certificate's CN field. The current best practice for creation and validation of TLS certs is to use the Subject Alternative Name (SAN) fields instead, so that a certificate might be issued with a unique CN and its logical identities in the SANs. This commit extends the peer validation logic to use Go's `(*"crypto/x509".Certificate).ValidateHostname` function for name validation, which allows SANs to be used for peer access control. In addition, it allows name validation to be enabled on clients as well. This is used when running Etcd behind an authenticating proxy, or as an internal component in a larger system (like a Kubernetes master).
This commit is contained in:
@ -128,6 +128,8 @@ Security:
|
||||
Enable client cert authentication.
|
||||
--client-crl-file ''
|
||||
Path to the client certificate revocation list file.
|
||||
--client-cert-allowed-name ''
|
||||
Allowed TLS name for client cert authentication.
|
||||
--trusted-ca-file ''
|
||||
Path to the client server TLS trusted CA cert file.
|
||||
--auto-tls 'false'
|
||||
@ -142,6 +144,8 @@ Security:
|
||||
Path to the peer server TLS trusted CA file.
|
||||
--peer-cert-allowed-cn ''
|
||||
Required CN for client certs connecting to the peer endpoint.
|
||||
--peer-cert-allowed-name ''
|
||||
Allowed TLS name for inter peer authentication.
|
||||
--peer-auto-tls 'false'
|
||||
Peer TLS using self-generated certificates if --peer-key-file and --peer-cert-file are not provided.
|
||||
--peer-crl-file ''
|
||||
|
Reference in New Issue
Block a user