O HTTPS padrão verifica apenas o servidor e permite que qualquer cliente se conecte. O TLS mútuo (mTLS) exige que tanto o servidor quanto o cliente apresentem certificados válidos. Assim, somente clientes com certificado assinado por uma CA confiável estabelecem conexão. Ao impor o mTLS no listener do Application Load Balancer (ALB), você rejeita conexões não autorizadas antes que elas alcancem o backend.
Essa configuração é ideal para serviços financeiros, IoT, serviços internos corporativos e aplicações do setor público que lidam com dados privados.
Como funciona
|
Tipo de autenticação |
Servidor verificado pelo cliente |
Cliente verificado pelo servidor |
|
Unidirecional (HTTPS padrão) |
Sim |
Não |
|
Mútua (mTLS) |
Sim |
Sim |
Na autenticação mútua, o servidor possui um certificado de CA e o cliente possui um certificado SSL ou TLS assinado por essa CA. O ALB valida o certificado do cliente em relação ao certificado da CA em cada conexão. Um canal seguro é estabelecido somente após ambas as partes verificarem a identidade uma da outra.
Pré-requisitos
Antes de começar, certifique-se de ter:
Um certificado SSL ou TLS configurado no listener do ALB. Para mais detalhes, consulte Configurar certificados HTTPS para comunicação criptografada.
-
Um certificado de CA raiz, obtido por meio de uma das seguintes opções:
Compra de uma CA privada no console do Certificate Management Service. Consulte Comprar e ativar uma CA privada.
Geração de um certificado de CA raiz autoassinado conforme a Etapa 1 deste tópico.
(Opcional) Etapa 1: Gerar um certificado de CA raiz autoassinado
Gere um certificado de CA raiz localmente e envie-o para o console do Certificate Management Service.
Gerar o certificado
-
Crie uma chave privada:
openssl genrsa -out ca.key 4096 -
Crie uma solicitação de assinatura de certificado (CSR):
Campo
Descrição
Obrigatório
Country Name
Código de país de duas letras, por exemplo,
cnpara ChinaSim
State or Province Name
Nome completo do estado ou província
Sim
Locality Name
Nome da cidade
Sim
Organization Name
Nome da empresa ou organização
Sim
Organizational Unit Name
Nome do departamento ou unidade
Sim
Common Name
Nome de domínio para o certificado
Não
Email Address
E-mail de contato do administrador do certificado
Não
A challenge password
Senha para autenticar o acesso à CSR. Deixe em branco se não for necessário
Não
An optional company name
Deixe em branco se não for necessário
Não
openssl req -new -out ca.csr -key ca.keyQuando solicitado, insira os valores para os seguintes campos:
Country Name (2 letter code) [XX]:cn State or Province Name (full name) []:bj Locality Name (eg, city) [Default City]:bj Organization Name (eg, company) [Default Company Ltd]:alibaba Organizational Unit Name (eg, section) []:test Common Name (eg, your name or your servers hostname) []:root Email Address []:a.alibaba.com A challenge password []: An optional company name []: -
Crie o certificado de CA raiz:
ca.crt— certificado de CA raiz (usado na Etapa 3 para configurar o AlbConfig)ca.csr— CSR enviada à CAca.key— chave privada (usada na Etapa 2 para assinar o certificado do cliente)
ImportanteMantenha o arquivo
ca.keyconfidencial. Qualquer pessoa com acesso à chave privada pode emitir certificados de cliente confiáveis.openssl x509 -req -in ca.csr -out ca.crt -signkey ca.key -CAcreateserial -days 3650Execute
lspara confirmar a presença dos seguintes arquivos:ca.crt ca.csr ca.key
Upload the CA certificate
Faça login no console do Certificate Management Service. No painel de navegação à esquerda, clique em Certificate Application Repository.
-
Clique em Create Repository. No painel exibido, defina os parâmetros a seguir e clique em OK:
Parâmetro
Descrição
Repository Name
Insira um nome personalizado
Data Source
Clique em Uploaded Certificates e selecione um certificado privado adquirido e emitido por um provedor de serviços de certificados terceirizado
Clique no repositório criado. Na página Manage Certificates, clique em Uploaded Certificates.
-
No painel CA Information, defina os parâmetros abaixo e clique em Confirm and Enable:
Parâmetro
Descrição
Package Name
Insira um nome personalizado para o certificado
CA Certificates
Cole o conteúdo codificado em PEM do arquivo
ca.crtou clique em Upload para selecionar o arquivoCertificate Key
Cole o conteúdo codificado em PEM do arquivo
ca.key
Etapa 2: Gerar um certificado de cliente
Use o certificado de CA autoassinado da Etapa 1 para emitir um certificado de cliente. Os clientes apresentam esse certificado para autenticação no listener do ALB.
-
Gere uma chave privada para o certificado do cliente:
openssl genrsa -out client.key 4096 -
Gere uma CSR para o certificado do cliente:
openssl req -new -out client.csr -key client.key -
Assine o certificado do cliente com a CA raiz da Etapa 1:
openssl x509 -req -in client.csr -out client.crt -signkey client.key -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650Execute
lspara confirmar a presença dos seguintes arquivos:client.crt client.csr client.key
Etapa 3: Configurar um AlbConfig para ativar a autenticação mútua
O recurso AlbConfig define a instância do ALB e seus listeners. Definir caEnabled: true em um listener ativa o mTLS. Com isso, o ALB exige e verifica um certificado de cliente em cada conexão HTTPS para esse listener.
Você precisa de dois IDs de certificado do console do Certificate Management Service:
ID do certificado do servidor: acesse SSL Certificates > ícone de Ações > Details > painel Certificate Details.
ID do certificado da CA raiz: acesse Certificate Application Repository > seu repositório > Manage Certificates > Details > painel Certificate Details.
Aplique um AlbConfig com a seguinte estrutura:
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb-demo
spec:
config:
name: alb-test
addressType: Intranet
# Specify at least two vSwitches in different zones.
# The zones must be supported by ALB and belong to the same virtual private cloud (VPC) as the cluster.
zoneMappings:
- vSwitchId: vsw-2zednnurkug2xl4******
- vSwitchId: vsw-2zeusdspvojoumx******
listeners:
- port: 443
protocol: HTTPS
caEnabled: true # Enables mutual authentication
caCertificates:
- CertificateId: 0e40dda998174723af39d37fcaf***** # Root CA certificate ID
certificates:
- CertificateId: 108*****-cn-hangzhou # Server certificate ID
IsDefault: true
Etapa 4: Testar a autenticação mútua
Implante um serviço de teste e verifique se o ALB impõe a validação do certificado do cliente.
-
Crie um arquivo chamado
coffee.yamlcom o seguinte conteúdo:apiVersion: apps/v1 kind: Deployment metadata: name: coffee spec: replicas: 2 selector: matchLabels: app: coffee template: metadata: labels: app: coffee spec: containers: - name: coffee image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: coffee-svc spec: ports: - port: 80 targetPort: 80 protocol: TCP selector: app: coffee type: NodePort --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/listen-ports: | [{"HTTPS": 443}] name: alb-ingress spec: ingressClassName: alb rules: - host: alb.ingress.alibaba.com # Replace with your actual domain name. http: paths: - path: / pathType: Prefix backend: service: name: coffee-svc port: number: 80 -
Implante o serviço de teste:
kubectl apply -f coffee.yamlSaída esperada:
deployment.apps/coffee created service/coffee-svc created ingress.networking.k8s.io/alb-ingress created -
Obtenha o endereço IP elástico (EIP) da instância do ALB:
Faça login no console do ALB e selecione a região onde a instância do ALB está implantada.
Na página Instances, clique na instância do ALB.
Na seção Zone da página de detalhes da instância, localize o EIP associado ao vSwitch.
-
Adicione um registro DNS ao arquivo
hostslocal para mapear o nome de domínio ao EIP:123.XX.XX.XX alb.ingress.alibaba.com -
Teste o acesso com o certificado do cliente:
curl https://alb.ingress.alibaba.com/ --cert client.crt --key client.keyO servidor retorna uma resposta e redireciona para uma página HTML. Isso confirma que o ALB aceitou o certificado do cliente.
Próximos passos
Se ocorrerem erros ao usar o ALB, consulte primeiro a documentação do ALB. Para mais informações, veja Solução de problemas do controlador de Ingress do ALB e Perguntas frequentes sobre Ingressos do ALB.