O Alibaba Cloud Service Mesh (ASM) permite adicionar um certificado para um nome de domínio no console. Esse recurso protege o acesso ao seu domínio com protocolos como HTTPS e aumenta a segurança do gateway de serviço. Este tópico descreve como adicionar um certificado para um nome de domínio.
Pré-requisitos
Você já implantou um aplicativo no cluster associado à sua instância do ASM e a instância é da Enterprise Edition ou Ultimate Edition.
Um gateway de entrada está implantado. Para mais informações, consulte Criar um gateway de entrada.
A injeção automática de proxy sidecar está ativada para o namespace. Para mais informações, consulte Ativar injeção automática de sidecar.
Você obteve o endereço IP do gateway do ASM. Para mais informações, consulte Obter o endereço IP de um gateway do ASM.
Informações de fundo
Este tópico usa o serviço myexampleapp para o domínio aliyun.com como exemplo para descrever como adicionar um certificado ao domínio aliyun.com. Após adicionar o certificado com sucesso, use um gateway do ASM para acessar o serviço myexampleapp do domínio aliyun.com pelo protocolo HTTPS.
Procedimento
-
Crie o serviço de exemplo myexampleapp.
-
Crie um arquivo chamado myexample-nginx.conf com o seguinte conteúdo.
Este serviço de exemplo baseia-se em NGINX. Crie um arquivo de configuração para o servidor NGINX. Para o serviço com o nome de domínio aliyun.com, a configuração a seguir especifica que as solicitações ao caminho raiz retornam a mensagem
Welcome to aliyun.com!e o código de status200.events { } http { log_format main '$remote_addr - $remote_user [$time_local] $status ' '"$request" $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; error_log /var/log/nginx/error.log; server { listen 80; location / { return 200 'Welcome to aliyun.com!'; add_header Content-Type text/plain; } } } -
Execute o comando a seguir para criar um ConfigMap para o servidor NGINX:
kubectl create configmap myexample-nginx-configmap --from-file=nginx.conf=./myexample-nginx.conf -
Crie um arquivo chamado myexampleapp.yaml com o seguinte conteúdo.
-
Execute o comando a seguir para criar o serviço interno para o nome de domínio aliyun.com:
kubectl apply -f myexampleapp.yaml
-
-
Importe o serviço myexampleapp para o gateway do ASM.
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique no nome da instância do ASM. No painel de navegação à esquerda, escolha .
Na página Ingress Gateway, clique no nome do gateway desejado.
Na página Gateway Details, clique em Upstream Service no painel de navegação à esquerda.
Na página Upstream Service, clique em Import service.
Na página Import service, selecione um Namespaces, selecione o serviço myexampleapp, clique no ícone
e clique em Submit.
-
Crie um certificado e uma chave privada.
-
Execute o comando a seguir no OpenSSL para criar um certificado raiz e uma chave privada:
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -subj '/O=myexample Inc./CN=aliyun.com' -keyout aliyun.root.key -out aliyun.root.crt -
Execute os comandos a seguir para gerar um certificado e uma chave privada para o domínio aliyun.com.
-
Execute o comando a seguir para criar o certificado aliyun.com.crt:
openssl x509 -req -days 365 -CA aliyun.root.crt -CAkey aliyun.root.key -set_serial 0 -in aliyun.com.csr -out aliyun.com.crt -
Execute o comando a seguir para criar a chave privada aliyun.com.key.
openssl req -out aliyun.com.csr -newkey rsa:2048 -nodes -keyout aliyun.com.key -subj "/CN=aliyun.com/O=myexample organization"
-
-
-
Adicione o certificado e a chave privada ao gateway do ASM.
NotaA partir da versão V1.17, as instâncias do ASM suportam certificados na página Certificate Management. Recomendamos migrar seus certificados para Certificate Management. Crie um certificado com o mesmo nome na página Certificate Management para substituir automaticamente o certificado existente, sem necessidade de excluir o antigo. Para mais informações sobre como atualizar uma instância, consulte Atualizar uma instância do ASM.
Um certificado na página Certificate Management cria automaticamente um Secret com o mesmo nome no plano de dados. Essa ação substitui o conteúdo de qualquer Secret existente com o mesmo nome.
Instâncias do ASM anteriores à v1.17
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique no nome da instância do ASM. No painel de navegação à esquerda, escolha .
Na página Ingress Gateway, clique no nome do gateway desejado. Na página Gateway Details, clique em Domain/Certificate no painel de navegação à esquerda.
Na página Domain/Certificate, clique na aba Certificate e clique em Create.
Na página New Certificate, insira um Name, cole o conteúdo de
aliyun.com.crtna caixa de texto Certificate e o conteúdo dealiyun.com.keyna caixa de texto key e clique em Create.
ASM v1.17 e posteriores
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique no nome da instância desejada. No painel de navegação à esquerda, escolha .
-
Na página Certificate Management, clique em Create. No painel Certificate Information, configure os parâmetros e clique em OK.
Parâmetro
Descrição
Name
Insira um nome para o certificado. Neste exemplo, use myexample-credential.
Public Key Certificate
O conteúdo do arquivo
aliyun.com.crtda Etapa 3.Private Key
O conteúdo do arquivo
aliyun.com.keyda Etapa 3.
-
Vincule o nome de domínio ao certificado.
Faça login no console do ASM. No painel de navegação à esquerda, escolha .
Na página Mesh Management, clique no nome da instância do ASM. No painel de navegação à esquerda, escolha .
Na página Ingress Gateway, clique no nome do gateway desejado. Na página Gateway Details, clique em Domain/Certificate no painel de navegação à esquerda.
Na página Domain/Certificate, clique na aba Domain e clique em Create.
-
Na página Add domain, defina Domain Name como *.aliyun.com e Protocol como HTTPS. Insira um Port Name e uma Port. Selecione uma credential e marque Secure connections with standard TLS semantics.. Em seguida, clique em Create.
NotaSe você selecionar Secure connections with standard TLS semantics., apenas solicitações criptografadas com TLS poderão acessar o nome de domínio.
-
Execute o comando a seguir para acessar aliyun.com via HTTPS e verificar se o certificado está vinculado ao nome de domínio:
curl -k -H Host:www.aliyun.com --resolve www.aliyun.com:443:<IP address of the ASM gateway> https://www.aliyun.comSaída esperada:
Welcome to aliyun.com!O acesso bem-sucedido a aliyun.com pelo protocolo HTTPS indica que o nome de domínio e o certificado foram vinculados corretamente.