Na autenticação unidirecional, a conexão HTTPS é estabelecida após a autenticação do servidor. Já na autenticação mútua, a conexão HTTPS só ocorre depois que tanto o cliente quanto o servidor são autenticados. Esse método oferece maior segurança e é ideal para proteger service críticos de negócios. Este tópico descreve como configurar a autenticação mútua em um listener HTTPS de uma instância CLB.
Procedimento
Neste exemplo, utiliza-se um certificado de autoridade certificadora (CA) autoassinado para assinar o certificado do cliente. Siga as etapas abaixo para configurar a autenticação mútua no listener HTTPS.

Pré-requisitos
Você criou uma instância CLB.
Você criou dois servidores backend, ECS01 e ECS02, cada um executando uma aplicação diferente.
Etapa 1: Adquirir um certificado de servidor
Adquira um certificado de servidor no Certificate Management Service console da Alibaba Cloud ou em outros provedores de service. Use um navegador para verificar se o certificado enviado pelo servidor foi emitido por uma autoridade confiável.
Este tópico usa como exemplo um certificado de servidor adquirido no Certificate Management Service console da Alibaba Cloud. Para mais informações, consulte Adquirir um certificado SSL.
Certifique-se de ter um nome de domínio válido para associar ao certificado.
Etapa 2: Gerar um certificado CA com OpenSSL
Na autenticação mútua, o certificado do servidor deve ser emitido por uma CA autorizada para ser considerado confiável pelos navegadores (Etapa 1). No entanto, como você gerencia e distribui os certificados de cliente, eles não exigem uma cadeia de confiança pública. Portanto, é possível usar um certificado CA autoassinado para emiti-los. Siga estas etapas para gerar um certificado CA autoassinado destinado à emissão de certificados de cliente.
Faça login em qualquer máquina Linux com OpenSSL instalado.
-
Execute o comando abaixo para criar a chave privada do certificado raiz:
openssl genrsa -out root.key 4096 -
Execute o comando a seguir para criar um arquivo de solicitação de assinatura de certificado (CSR) para o certificado raiz:
openssl req -new -out root.csr -key root.keyInsira as informações conforme solicitado. Veja um exemplo abaixo:
NotaO Common Name do certificado CA deve ser exclusivo. Não use o mesmo Common Name dos certificados de servidor ou de cliente.
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 []: -
Execute o comando seguinte para criar o certificado raiz:
openssl x509 -req -in root.csr -out root.crt -signkey root.key -CAcreateserial -days 3650A saída será semelhante a esta:
[root@i-xxx ~]# openssl x509 -req -in root.csr -out root.crt -signkey root.key -CAcreateserial -days 3650 Signature ok subject=C = cn, ST = bj, L = bj, O = alibaba, OU = test, CN = root, emailAddress = xxx@xxx.com Getting Private key Execute
lspara visualizar o certificado raiz geradoroot.crte a chave privadaroot.key.
Etapa 3: Gerar um certificado de cliente
Gere uma chave privada para o certificado de cliente executando o comando abaixo:
Crie um arquivo CSR para o certificado de cliente com o comando a seguir. Defina o Common Name como seu nome de domínio.
Emita o certificado de cliente utilizando este comando:
Converta o certificado de cliente gerado
client.crtpara um arquivo PKCS12 reconhecível pelo navegador através do comando abaixo. Quando solicitado, insira a senha de criptografia definida para a chave privada do cliente.Verifique os arquivos de certificado de cliente gerados executando
ls:client.key,client.crteclient.p12.
openssl genrsa -out client.key 4096
openssl req -new -out client.csr -key client.key
openssl x509 -req -in client.csr -out client.crt -CA root.crt -CAkey root.key -CAcreateserial -days 3650
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
Etapa 4: Instalar o certificado de cliente
Instale o certificado de cliente na máquina cliente.
Windows client
Dê um clique duplo no arquivo client.p12 e siga o Assistente de Importação de Certificados para concluir a instalação.
Linux client
Faça upload dos arquivos client.key, client.crt e root.crt para qualquer diretório no seu cliente Linux.
Neste exemplo, o diretório utilizado é /home/ca. Execute sudo chmod 700 /home/ca para ajustar as permissões do diretório.
Etapa 5: Fazer upload do certificado de servidor e do certificado CA
Acesse o CLB console.
No painel de navegação à esquerda, escolha e clique em Add Certificate para enviar o certificado de servidor.
-
No painel Add Certificate, selecione Third-party Certificates, configure os parâmetros listados e clique em Create.
Parâmetro
Descrição
Certificate Name
Insira um nome para identificar o certificado.
Certificate Type
Selecione Server Certificate.
Public key certificate
Conteúdo do certificado de servidor. Cole o conteúdo no editor.
Private Key
Chave privada do certificado de servidor. Cole a chave privada no editor.
Region
Escolha a região onde a instância CLB está localizada.
Na página Certificates, clique em Add Certificate para fazer upload do certificado CA.
-
No painel Add Certificate, selecione Third-party Certificates, configure os parâmetros necessários e clique em Create.
Parâmetro
Descrição
Certificate Name
Defina um nome para o certificado.
Certificate Type
Selecione CA Certificate.
Client CA Certificate
Envie o certificado de chave pública do cliente.
Region
Indique a região da instância CLB.
Etapa 6: Configurar a autenticação mútua em um listener HTTPS
O CLB rejeita requisições de clientes sem certificado instalado. Caso sua instância CLB esteja em ambiente de produção, teste essa configuração primeiro em um ambiente de homologação. Como alternativa, utilize uma nova porta de escuta para evitar interrupções nos service existentes.
Acesse o Classic Load Balancer console.
Clique no ID da instância CLB criada anteriormente.
Na aba Listeners, clique em Add Listener.
-
Configure os parâmetros abaixo na aba Protocol & Listener e clique em Next.
Select Listener Protocol: HTTPS
Listener Port: 443
Selecione o certificado de servidor enviado na aba Certificate Management Service.
Clique em Modify ao lado de Advanced Settings, ative a autenticação mútua, selecione o certificado CA carregado e clique em Next.
Escolha Default Server Group e clique em Add para incluir os servidores backend.
Mantenha os valores padrão para os demais parâmetros, clicando em Next para avançar no assistente. Na última página, clique em Submit para finalizar a criação do listener.
Etapa 7: Testar o recurso de autenticação mútua
Windows client
Abra o navegador e insira
https://ip:port, substituindo ip pelo endereço IP público do CLB. Confirme o certificado na caixa de diálogo exibida, seguindo as instruções.-
Atualize a página web. Observe que as requisições são distribuídas uniformemente entre os servidores backend.
A exibição da mensagem
Hello World ! This is ECS01.indica que a requisição foi encaminhada ao servidor ECS01.Já a mensagem
Hello World ! This is ECS02.sinaliza que a requisição foi direcionada ao servidor ECS02.
Linux client
Acesse o cliente Linux onde os certificados foram instalados e execute o comando abaixo para validar a autenticação mútua do CLB:
sudo curl --cert /home/ca/client.crt --key /home/ca/client.key --cacert /home/ca/root.crt https://<the domain name on the server certificate>:<port>
As respostas a seguir confirmam que a autenticação mútua entre cliente e servidor foi concluída com êxito e que as requisições estão sendo distribuídas entre duas instâncias ECS.
[test@iZxxxw521i57Z ~]$ sudo curl --cert /home/ca/client.crt --key /home/ca/client.key --cacert /home/ca/ca.crt https://xxx.com.cn
Hello World ! This is ECS01.
[test@iZxxxw521i57Z ~]$ sudo curl --cert /home/ca/client.crt --key /home/ca/client.key --cacert /home/ca/ca.crt https://xxx.com.cn
Hello World ! This is ECS02.