A autenticação mútua HTTPS permite que servidor e cliente verifiquem a identidade um do outro. Use esse recurso no ALB Ingress em cenários bancários, financeiros, de IoT, serviços internos ou governamentais, nos quais os dados são sensíveis ou o acesso deve ser restrito a clientes confiáveis.
Como funciona
|
Autenticação unidirecional HTTPS |
Autenticação mútua HTTPS |
|
|
Cliente verifica servidor |
Sim |
Sim |
|
Servidor verifica cliente |
Não |
Sim |
|
Cliente possui |
— |
Certificado SSL ou TLS assinado por uma CA raiz |
|
Servidor possui |
Certificado do servidor |
Certificado da CA raiz |
O servidor usa seu certificado de CA raiz para validar o certificado do cliente antes de estabelecer a conexão.
Pré-requisitos
Certifique-se de que:
Um certificado SSL ou TLS esteja configurado no listener do ALB.
-
Você tenha obtido um certificado de CA raiz por meio de uma das seguintes opções:
Compra de uma CA privada no Certificate Management Service
(Opcional) Etapa 1: Gerar um certificado de CA autoassinado
Ignore esta etapa caso já possua um certificado de CA raiz.
-
Gere uma chave privada:
openssl genrsa -out ca.key 4096 -
Crie uma solicitação de assinatura de certificado (CSR):
Campo
Obrigatório
Descrição
Country Name
Sim
Código de país de duas letras, por exemplo,
cnState or Province Name
Sim
Nome da província ou região
Locality Name
Sim
Nome da cidade
Organization Name
Sim
Nome da organização
Organizational Unit Name
Sim
Nome do departamento
Common Name
Não
Um nome de uso comum
Email Address
Não
E-mail do administrador do certificado
A challenge password
Não
Senha de segurança opcional para a CSR. Deixe em branco se não for necessária
openssl req -new -out ca.csr -key ca.keyO OpenSSL solicita 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 []:example@ali A challenge password []: -
Crie o certificado de CA raiz com validade de 3.650 dias:
Arquivo
Descrição
ca.crtCertificado da CA raiz
ca.csrArquivo CSR
ca.keyChave privada
openssl x509 -req -in ca.csr -out ca.crt -signkey ca.key -CAcreateserial -days 3650Execute
lspara confirmar os arquivos gerados:ca.crt ca.csr ca.key
Etapa 2: Fazer upload do certificado de CA
Faça upload do certificado de CA raiz no Certificate Management Service para obter um identificador de certificado para o AlbConfig.
Faça login no console do Certificate Management Service. Selecione a região Outside Chinese Mainland. No painel de navegação à esquerda, clique em Certificate Application Repository.
-
Na página Certificate Application Repository, clique em Create Repository. No painel Create Repository, defina os parâmetros abaixo e clique em OK.
Parâmetro
Descrição
Repository Name
Nome personalizado do repositório
Data Source
Selecione Upload CA Certificates para enviar certificados assinados por CAs de terceiros
Clique no seu repositório e, em seguida, clique em Uploaded Certificates.
-
No painel CA Information, preencha os campos a seguir e clique em Confirm and Enable.
Parâmetro
Descrição
Package Name
Nome personalizado do certificado
CA Certificates
Cole o conteúdo do certificado ou clique em Upload and Parse File
Clique em Details referente ao certificado enviado e anote o identificador do certificado para usar na Etapa 4.
Etapa 3: Gerar um certificado de cliente
Use o certificado de CA raiz para assinar um certificado de cliente.
-
Gere uma chave privada para o cliente:
openssl genrsa -out client.key 4096 -
Crie uma CSR para o certificado do cliente:
openssl req -new -out client.csr -key client.keyPreencha os mesmos campos da Etapa 1. Os valores podem diferir dos utilizados no certificado de CA.
-
Assine o certificado do cliente usando a CA raiz:
Arquivo
Descrição
client.crtCertificado do cliente assinado pela CA raiz
client.csrArquivo CSR
client.keyChave privada do cliente
openssl x509 -req -in client.csr -out client.crt -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650Os arquivos
ca.crteca.keyforam gerados na Etapa 1. Executelspara confirmar a saída:client.crt client.csr client.key
Etapa 4: Ativar e testar a autenticação mútua
Ativar a autenticação mútua
-
Abra o AlbConfig para edição:
kubectl edit albconfig <ALBCONFIG_NAME>Substitua
<ALBCONFIG_NAME>pelo nome do seu AlbConfig. -
Na configuração do listener HTTPS (porta 443), adicione
caEnabled: truee definacaCertificates.CertificateIdcomo o identificador de certificado obtido na Etapa 2:apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: #... spec: config: #... listeners: - port: 443 protocol: HTTPS caEnabled: true # Enable mutual authentication caCertificates: - CertificateId: 0e40dda998174723af39d37fcaf***** # Certificate identifier from Step 2 certificates: #...
Testar a autenticação mútua
-
Obtenha o nome do host e o endereço do Ingress:
kubectl get ingressSaída esperada:
NAME CLASS HOSTS ADDRESS PORTS AGE https-ingress https-ingressclass demo.alb.ingress.top alb-********.alb.aliyuncs.com 80, 443 83mAnote os valores de
HOSTSeADDRESS. -
Envie uma requisição com o certificado do cliente. Substitua
demo.alb.ingress.topealb-********.alb.aliyuncs.compelos valores obtidos na etapa anterior:curl -H HOST:demo.alb.ingress.top -k https://alb-********.alb.aliyuncs.com --cert client.crt --key client.keySaída esperada:
old
(Opcional) Etapa 5: Desativar a autenticação mútua
-
Abra o AlbConfig para edição:
kubectl edit albconfig <ALBCONFIG_NAME> -
Defina
caEnabledcomofalse:apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: #... spec: config: #... listeners: - port: 443 protocol: HTTPS caEnabled: false # Disable mutual authentication caCertificates: - CertificateId: 0e40dda998174723af39d37fcaf***** certificates: #...