Network Encryption (TLS)
Table of Contents
MinIO supports Transport Layer Security (TLS) 1.2+ encryption of incoming and outgoing traffic.
SSL is Deprecated
TLS is the successor to Secure Socket Layer (SSL) encryption. SSL is fully deprecated as of June 30th, 2018.
Enabling TLS
For Kubernetes clusters with a valid TLS Cluster Signing Certificate, the MinIO Kubernetes Operator can automatically generate TLS certificates while deploying or modifying a MinIO Tenant. The TLS certificate generation process is as follows:
The Operator generates a Certificate Signing Request (CSR) associated to the Tenant. The CSR includes the appropriate DNS SubjectAlternateNames (SAN) for the Tenant services and pods.
The Operator then waits for CSR approval
The CSR waits pending approval. The Kubernetes TLS API can automatically approve the CSR if properly configured. Otherwise, a cluster administrator must manually approve the CSR before Kubernetes can generate the necessary certificates.
The Operator applies the generated TLS Certificates to each MinIO Pod in the Tenant.
The Kubernetes TLS API uses the Kubernetes cluster Certificate Authority (CA) signature algorithm when generating new TLS certificates. See Supported TLS Cipher Suites for a complete list of MinIO’s supported TLS Cipher Suites and recommended signature algorithms.
By default, Kubernetes places a certificate bundle on each pod at /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
.
This CA bundle should include the cluster or root CA used to sign the MinIO Tenant TLS certificates.
Other applications deployed within the Kubernetes cluster can trust this cluster certificate to connect to a MinIO Tenant using the MinIO service DNS name (e.g. https://minio.minio-tenant-1.svc.cluster-domain.example:443
).
Multiple Domain-Based TLS Certificates
The MinIO Operator supports attaching user-specified TLS certificates when deploying or modifying the MinIO Tenant.
These custom certificates support Server Name Indication (SNI), where the MinIO server identifies which certificate to use based on the hostname specified by the connecting client. For example, you can generate certificates signed by your organization’s preferred Certificate Authority (CA) and attach those to the MinIO Tenant. Applications which trust that CA can connect to the MinIO Tenant and fully validate the Tenant TLS certificates.
Supported TLS Cipher Suites
MinIO recommends generating ECDSA (e.g. NIST P-256 curve) or EdDSA (e.g. Curve25519) TLS private keys/certificates due to their lower computation requirements compared to RSA.
MinIO supports the following TLS 1.2 and 1.3 cipher suites as supported by Go. The lists mark recommended algorithms with a icon:
TLS_CHACHA20_POLY1305_SHA256
TLS_AES_128_GCM_SHA256
TLS_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384