O Network Load Balancer (NLB) oferece suporte a descarregamento de SSL em grande escala. Você pode implantar uma instância do NLB como entrada de tráfego e configurar um certificado SSL e um certificado de autoridade certificadora (CA) para ative a autenticação mútua, que exige que tanto o cliente quanto o servidor forneçam certificados digitais para provar suas identidades. Isso melhora a segurança das suas cargas de trabalho.
Informações de contexto
Autenticação unidirecional: O cliente deve verifique a identidade do servidor. O servidor não precisa verifique a identidade do cliente. O cliente baixe um certificado de chave pública do servidor para autenticação. A conexão só pode ser estabelecida após a verificação da identidade do servidor.
Autenticação mútua: O cliente baixe um certificado do servidor (certificado de chave pública) e envie um certificado do cliente (certificado de chave pública) para o servidor para autenticação. A conexão só é estabelecida após a verificação das identidades do cliente e do servidor. A autenticação mútua oferece maior segurança.
Pré-requisitos
crie uma instância do NLB. Para mais informações, consulte crie e gerencie instâncias de NLB.
-
crie três instâncias do Elastic Compute Service (ECS). Para informações sobre como crie uma instância, consulte crie uma instância usando o assistente.
-
Adicione o ECS01 e o ECS02 à instância do NLB como servidores de back-end. Aplique diferentes aplicações NGINX no ECS01 e no ECS02.
Use o ECS03 para gerar certificados de servidor e de cliente autoassinados. Baixe o OpenSSL no site do OpenSSL e instale no ECS03. A versão do OpenSSL deve ser 1.1.1 ou posterior. Se você usar um servidor Linux existente para gerar certificados autoassinados, não será necessário crie o ECS03.
-
-
crie um grupo de servidores para a instância do NLB e adicione o ECS01 e o ECS02 ao grupo. Neste exemplo, as portas de back-end do ECS01 e do ECS02 são definidas como 80.
ImportanteO protocolo de back-end do grupo de servidores deve ser TCP. As solicitações enviadas do NLB para o servidor de back-end são descriptografadas por SSL, e os servidores de back-end não precisam realizar a descriptografia SSL nas solicitações recebidas.
Você não pode associar listeners que usam SSL sobre TCP a grupos de servidores para os quais ele está ativado. Certifique-se de que o recurso Client IP Preservation esteja desativado para o grupo de servidores.
Etapa 1: Preparar um certificado de CA
Faça login no Certificate Management Service console
No painel de navegação à esquerda, escolha Private Certificate Management.
Na página Private Certificate Management, na aba Private CAs, localize o certificado de CA raiz.
Clique em no ícone
ao lado do certificado de CA raiz, localize a CA intermediária privada que deseja gerencie e clique em Apply for Certificate na coluna Actions.-
No painel Apply for Certificate, defina os parâmetros e clique em Confirm.
A seção a seguir descreve os parâmetros relevantes para este tópico. Para mais informações, consulte gerencie certificados privados.
Parâmetro
Descrição
Certificate Type
selecione o tipo de certificado privado que deseja comprar. Neste exemplo, Client Certificate está selecionado.
Personal Name
O identificador exclusivo para o usuário cliente. Necessário apenas para um certificado de cliente.
Neste exemplo, insira o nome de domínio da instância NLB.
Validity Period
especifique um período de validade para o certificado privado. O período de validade do certificado privado não pode exceder a duração da assinatura do service Private Certificate Authority (PCA) comprado.
Neste exemplo, o período de validade padrão é usado, que é de 30 dias.
O certificado privado é emitido imediatamente após o envio da solicitação. Para visualize os detalhes do certificado privado, localize a CA privada, clique em Certificates na coluna Actions e visualize as informações na página Certificates.
Etapa 2: Preparar um certificado de servidor
Um navegador verifica a identidade de um servidor checando se o certificado enviado pelo servidor foi emitido por uma CA confiável. Este tópico descreve dois métodos para obter um certificado de servidor. Você pode comprar um certificado de servidor no Certificate Management Service ou envie um certificado autoassinado para o Certificate Management Service.
Método 1: Comprar um certificado de servidor
Você pode comprar certificados de servidor no Certificate Management Service ou em outros provedores de services. Para mais informações, consulte Purchase an SSL certificate.
Método 2: envie um certificado de servidor autoassinado
-
Faça login remoto no ECS03 e execute o seguinte comando para gerar um certificado de servidor autoassinado. Certifique-se de que o certificado de CA esteja armazenado no ECS03. Os arquivos de certificado de CA usados neste exemplo são
root.crteroot.key.-
execute o seguinte comando para gerar uma chave privada para o certificado do servidor:
sudo openssl genrsa -out server.key 4096 -
execute o seguinte comando para gerar uma solicitação de assinatura de certificado (CSR):
sudo openssl req -new -out server.csr -key server.keyconfigure os outros parâmetros. Exemplos:
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) []:www.example.com Email Address []:a.alibaba.com A challenge password []: An optional company name []:Importantedefina o Common Name como o nome de domínio associado ao certificado do servidor. Certifique-se de que o nome de domínio seja válido. Mantenha os valores dos outros parâmetros iguais aos do certificado raiz e do certificado do cliente.
Neste exemplo, a instância NLB usa o nome de domínio personalizado
www.example.compara fornecer services externos. Portanto, o Common Name é definido comowww.example.com. -
execute o seguinte comando para gerar uma chave pública para o certificado do servidor:
sudo openssl x509 -req -in server.csr -out server.crt -signkey server.key -CA root.crt -CAkey root.key -CAcreateserial -days 3650A seguinte saída é retornada:
Signature ok subject=/C=cn/ST=bj/L=bj/O=alibaba/OU=test/CN=www.xxx.com.cn/emailAddress=a.alibaba.com Getting Private key Getting CA Private Key -
execute o seguinte comando para crie uma pasta para armazenar os arquivos do certificado do servidor:
sudo mkdir -p /root/ssl -
execute o seguinte comando para copiar o certificado do servidor para a pasta:
sudo cp server.crt /root/ssl sudo cp server.key /root/ssl -
execute o seguinte comando para visualize o certificado do servidor
server.crte a chave privadaserver.keydo certificado do servidor:cd /root/ssl lsA seguinte saída é retornada:
root.crt root.csr root.key root.srl server.crt server.csr server.key
-
-
Neste exemplo, um cliente Windows é usado. Abra a interface de linha de comando (CLI) no cliente Windows e execute os seguintes comandos para exportar os arquivos de certificado do servidor gerados em Step 1 para a área de trabalho local:
scp root@IPaddress:/root/ssl/server.crt C:\Users\Public\Desktop #Replace 'IPaddress' with the IP address of the server that generates the server certificate scp root@IPaddress:/root/ssl/server.key C:\Users\Public\Desktop #Replace 'IPaddress' with the IP address of the server that generates the server certificate Faça login no Certificate Management Service console.
No painel de navegação à esquerda, escolha .
Clique em na aba Uploaded Certificates e clique em Upload Certificate.
-
No painel Upload Certificate, defina os seguintes parâmetros e clique em OK.
Para mais informações, consulte envie, sincronize e compartilhe certificados SSL.
Parâmetro
Descrição
Certificate Algorithm
Neste exemplo, Internationally Accepted Algorithm está selecionado.
Certificate Name
insira um nome para o certificado que deseja envie.
Certificate File
insira o conteúdo do arquivo de certificado de CA codificado em PEM.
Você pode usar um dos seguintes métodos para insira o conteúdo. Método 1: Use um editor de texto para abrir o arquivo de certificado de CA no formato PEM ou CRT. Em seguida, copie o conteúdo para o campo Certificate File. Método 2: Clique em Upload and Parse File abaixo do campo Certificate File. Em seguida, selecione o arquivo de certificado de CA no seu computador para envie o conteúdo do arquivo.
Neste exemplo, o arquivo de certificado do servidor
server.crté enviado.Certificate Key
insira o conteúdo do arquivo de chave privada codificado em PEM.
Você pode usar um dos seguintes métodos para insira o conteúdo. Método 1: Use um editor de texto para abrir o arquivo de chave privada no formato KEY. Em seguida, copie o conteúdo para o campo Add Private Key. Método 2: Clique em Upload and Parse File abaixo do campo Add Private Key. Em seguida, selecione o arquivo de chave privada no seu computador para envie o conteúdo do arquivo.
Neste exemplo, o arquivo de chave privada
server.keyé enviado.Certificate Chain
insira o conteúdo do arquivo da cadeia de certificados. Este parâmetro é ignorado neste exemplo.
Etapa 3: Preparar um certificado de cliente
Você pode usar um dos seguintes métodos para preparar um certificado de cliente de acordo com os requisitos do seu negócio:
Faça login no Certificate Management Service console.
No painel de navegação à esquerda, escolha Private Certificate Management.
-
Na página Private Certificate Management, na aba Private CAs, localize o certificado de CA raiz.
Para mais informações sobre como comprar um certificado de CA raiz, consulte compre e ative uma CA privada.
Localize o certificado de CA raiz e clique em no ícone
. Em seguida, localize o certificado de CA subordinada e clique em Certificates na coluna Actions.-
Na página Certificates, localize o certificado privado de destino. Na coluna Actions, clique em Download.
Na caixa de diálogo Download Certificate, selecione um formato de certificado e clique em Confirm and Download. Neste exemplo, o formato CRT é selecionado, o certificado do cliente é
client.crt, e a chave privada do certificado éclient.key.-
Converta o certificado do cliente para um arquivo PKCS12 reconhecível pelo navegador.
Faça login remoto no ECS03. Para mais informações, consulte Guidelines on instance connection.
-
execute o seguinte comando para crie uma pasta para armazenar o certificado do cliente:
sudo mkdir -p /root/ca/users envie o certificado do cliente
client.crte a chave privada do certificadoclient.keypara o diretório users.-
execute o seguinte comando para converter o certificado do cliente em um arquivo PKCS12:
sudo openssl pkcs12 -export -clcerts -in /root/ca/users/client.crt -inkey /root/ca/users/client.key -out /root/ca/users/client.p12 Siga as instruções para defina uma chave de criptografia para a chave privada do certificado.
-
insira a senha usada para exportar o certificado do cliente. Esta senha é usada para criptografar o certificado do cliente e é necessária para instale o certificado do cliente.
A seguinte saída é retornada:
Enter pass phrase for /root/ca/users/client.key: Enter Export Password: Verifying - Enter Export Password:
-
execute os seguintes comandos para visualize o certificado do cliente gerado:
cd /root/ca/users lsA seguinte saída é retornada:
client.crt client.key client.p12 -
Neste exemplo, um cliente Windows é usado. Abra a CLI e execute o seguinte comando para exportar o certificado do cliente:
scp root@IPaddress:/root/ca/users/client.p12 C:\Users\Public\Desktop #Replace 'IPaddress' with the IP address of the server that generates the client certificate
Etapa 4: instale o certificado do cliente
instale o certificado do cliente no seu cliente. Neste exemplo, um cliente Windows e um cliente Linux são usados para mostrar como instale o certificado do cliente.
Cliente Windows
Importe o certificado do cliente para o Microsoft Edge.
Abra o Microsoft Edge. No canto superior direito, escolha
> Settings.No painel de navegação à esquerda, clique em na aba Privacy, search, and services. Em seguida, clique em Manage certificates na seção Security e importe o arquivo PKCS12. Nesta etapa, você deve insira a senha usada para exportar o certificado do cliente em Step 3.
Cliente Linux
Se o ECS03 for usado para gerar o certificado do cliente, o certificado do cliente será armazenado no diretório do ECS03. Se outro cliente Linux for usado para gerar o certificado do cliente, execute as seguintes etapas para copiar os certificados para o diretório do cliente Linux primeiro:
-
Faça login no cliente Linux. execute os seguintes comandos para copiar o certificado do cliente, o certificado do servidor e o certificado raiz para um diretório:
-
execute o seguinte comando para crie uma pasta:
sudo mkdir /root/ca -
execute o seguinte comando para modifique as permissões do diretório:
sudo chmod 700 /root/ca -
execute o seguinte comando para copiar os certificados para o diretório do cliente Linux:
O caminho a seguir é apenas para referência. especifique o caminho real que você usa.
sudo scp home@IPaddress:/root/ca/users/client.crt /root/ca //Replace 'IPaddress' with the IP address of the server that generates the client certificate sudo scp home@IPaddress:/root/ca/root.crt /root/ca //Replace 'IPaddress' with the IP address of the server that generates the root certificate sudo scp home@IPaddress:/root/ca/root.key /root/ca //Replace 'IPaddress' with the IP address of the server that generates the root certificate sudo scp home@IPaddress:/root/ssl/server.crt /root/ca //Replace 'IPaddress' with the IP address of the server that generates the server certificate sudo scp home@IPaddress:/root/SSL/server.key /root/ca //Replace 'IPaddress' with the IP address of the server that generates the server certificate
-
Etapa 5: configure a autenticação mútua para um listener que usa SSL sobre TCP
Faça login no NLB console.
Na barra de navegação superior, selecione a região da instância do NLB.
Na página Instances, localize a instância do NLB e clique em Actions na coluna Create Listener.
-
Na etapa Configure Listener, defina os seguintes parâmetros e clique em Next.
A tabela a seguir descreve apenas alguns dos parâmetros. Mantenha os valores padrão para os outros parâmetros. Para mais informações, consulte crie um listener que usa SSL sobre TCP.
Parâmetro
Procedimento
Listener Protocol
selecione um protocolo de listener. Neste exemplo, TCPSSL está selecionado.
Listener Port
especifique uma porta na qual a instância do NLB escuta. A instância do NLB usa a porta para receber solicitações e encaminhá-las aos servidores de back-end. A porta 443 é usada neste exemplo.
Na etapa Configure SSL Certificate, selecione o certificado do servidor especificado em Step 2 na lista suspensa Server Certificate.
Ative o Enable Mutual Authentication. selecione o certificado de CA comprado na Etapa 1 na lista suspensa Default CA Certificate.
selecione uma TLS Security Policy e clique em Next.
Na etapa Select Server Group, selecione o grupo de servidores que você criou e visualize as informações sobre os servidores de back-end ECS01 e ECS02. Neste exemplo, as portas dos servidores de back-end são definidas como 80. Em seguida, clique em Next.
Na etapa Configuration Review, confirme as configurações e clique em Submit.
Etapa 6: verifique a autenticação mútua
Cliente Windows
-
acesse a página Instances do NLB, clique em no ID da instância do NLB que deseja gerencie e clique em na aba Listener para visualize o status de verificação de integridade dos listeners que usam SSL sobre TCP.
Se a coluna Health Check Status exibir Healthy, os servidores de back-end podem processar solicitações encaminhadas pelo listener do NLB.
insira
https://The domain name associated with the server certificatena barra de endereços do seu navegador, por exemplo,https://www.example.com. Na caixa de diálogo que aparece, selecione o certificado usado para verifique a identidade do cliente e clique em OK.
Para evitar problemas causados pelo cache do navegador, recomendamos que você use uma janela de navegação privativa para acesse o nome de domínio DNS sempre que testar o balanceamento de carga da Camada 4. Você pode observar que as solicitações são distribuídas para as duas instâncias do ECS. Um acesso retorna Hello World ! This is ECS01. e outro acesso retorna Hello World ! This is ECS02.
Cliente Linux
Faça login no cliente Linux onde o certificado raiz, o certificado do servidor e o certificado do cliente estão armazenados e execute os seguintes comandos para testar a autenticação mútua:
sudo curl --cert /root/ca/client.crt --key /root/ca/client.key --cacert /root/ca/root.crt www.example.com
www.example.com é o nome de domínio associado ao certificado do servidor.
Se o seguinte pacote de resposta de eco for retornado, tanto o cliente quanto o servidor passaram na autenticação mútua, e as solicitações são distribuídas para o ECS01 e ECS02.
$ sudo curl --cert /root/ca/client.crt --key /root/ca/client.key --cacert /root/ca/root.crt https://xxx.com.cn
Hello World ! This is ECS01.
$ sudo curl --cert /root/ca/client.crt --key /root/ca/client.key --cacert /root/ca/root.crt https://xxx.com.cn
Hello World ! This is ECS02.