Todos os produtos
Search
Central de documentação

Microservices Engine:Ativar TLS para instâncias do MSE Nacos

Última atualização: Jun 28, 2026

O Nacos oferece suporte a TLS para criptografar dados transmitidos entre clientes e servidores, evitando a interceptação ou adulteração de informações sensíveis.

Pré-requisitos

  • ou Ative o MSE.

  • Crie um mecanismo Nacos versão 2.1.2.1 ou posterior. Criar um mecanismo Nacos. Para atualizar uma versão anterior, consulte Atualizar a versão de um mecanismo Nacos.

  • A versão do Java Development Kit (JDK) deve ser 8u252 ou posterior.

    Nota

    Versões do JDK anteriores à 8u252 apresentam problemas de compatibilidade com TLS. Atualize para a versão 8u252 ou posterior ou utilize um nacos-client puro. Como importar um nacos-client puro?.

    • Um nacos-client puro pode usar OpenSSL como provedor SSL, mas é necessário remover o parâmetro nacos.remote.client.rpc.tls.provider.

    • As versões puras do Nacos não aplicam shade em pacotes secundários dependentes. Talvez seja preciso resolver conflitos de pacotes.

Etapa 1: Modifique as configurações de parâmetros do Nacos

  1. Faça login no console do MSE e selecione uma região na barra de navegação superior.

  2. No painel de navegação à esquerda, escolha Microservices Registry > Instances. Clique em nome da instância.

  3. No painel de navegação à esquerda, clique em Parameter Settings. Clique em Edit, defina o parâmetro TLSEnabled como Yes e clique em Save and Restart Instance.

    Após a reinicialização, o servidor aceita conexões TLS de clientes Nacos.

Etapa 2: Atualizar o nacos-client

Nota

O uso de TLS exige o nacos-client 2.2.1 ou posterior.

  1. Atualize o nacos-client para a versão 2.2.1 ou posterior.

    <dependency>
        <groupId>com.alibaba.nacos</groupId>
        <artifactId>nacos-client</artifactId>
        <version>2.2.1</version>
    </dependency>
  2. Defina os parâmetros tls para ativar o recurso TLS.

    Configure os parâmetros tls usando um dos métodos abaixo. Prioridade: arquivo de propriedades > parâmetros JVM > variáveis de ambiente.

    • Defina os parâmetros em um arquivo de propriedades e passe-os ao criar instâncias de NacosConfigService ou NacosNamingService.

      • properties.put("nacos.remote.client.rpc.tls.enable","true");

      • properties.put("nacos.remote.client.rpc.tls.trustAll","true");

      • properties.put("nacos.remote.client.rpc.tls.provider","JDK");

      Este método tem precedência sobre parâmetros JVM e variáveis de ambiente, aplicando-se no nível da instância NacosConfigService e NacosNamingService.

    • Configure parâmetros JVM.

      • -Dnacos.remote.client.rpc.tls.enable=true

      • -Dnacos.remote.client.rpc.tls.trustAll=true

      • -Dnacos.remote.client.rpc.tls.provider=JDK

      Esta abordagem atua no nível do processo JVM para todas as instâncias de NacosConfigService e NacosNamingService sem substituições via arquivo de propriedades.

    • Utilize variáveis de ambiente.

      • nacos_remote_client_rpc_tls_enable=true

      • nacos_remote_client_rpc_tls_trustAll=true

      • nacos_remote_client_rpc_tls_provider=JDK

      Essa configuração aplica-se no nível do servidor a todas as instâncias sem substituições por JVM ou arquivo de propriedades.

  3. Verifique se a criptografia TLS está ativada.

    1. Visualize os logs de inicialização.

      Durante a inicialização, o nacos-client registra a configuração TLS em {user.home}/logs/nacos/remote.log.

      2023-04-06 09:56:56.539 INFO [com.alibaba.nacos.client.Worker:c.a.n.c.r.c.g.GrpcClient] grpc client connection server:mse-xxx.nacos-ans.mse.aliyuncs.com ip,serverPort:9848,grpcTslConfig:{"sslProvider":"","enableTls":true,"mutualAuthEnable":false,"trustAll":true}

      O campo "enableTls":true confirma que o TLS está ativo. Se o cliente iniciar e ler/gravar configurações normalmente, a criptografia funciona corretamente.

    2. Capture pacotes de dados com o comando tcpdump.

      Execute o tcpdump para capturar pacotes. O exemplo a seguir salva a saída em /tmp/tcptrace.cap. Ajuste o caminho conforme necessário.

      sudo tcpdump -i any -w /tmp/tcptrace.cap -p 9848

      Abra o arquivo no Wireshark ou ferramenta similar. Se o protocolo exibido for TCP&TLS, a criptografia está ativa.

Perguntas frequentes

Como importar um nacos-client puro?

Adicione as seguintes dependências:

<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client</artifactId>
    <version>2.2.1</version>
    <classifier>pure</classifier>
</dependency>
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-common</artifactId>
    <version>2.2.1</version>
</dependency>
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-api</artifactId>
    <version>2.2.1</version>
</dependency>

Se o TLS estiver ativado no mecanismo do servidor, versões mais antigas do nacos-client são suportadas para criptografia?

Não. É necessário atualizar o nacos-client para a versão 2.2.1 ou posterior para habilitar a criptografia TLS.

Se o TLS estiver ativado no mecanismo do servidor, existem problemas de compatibilidade com versões mais antigas do nacos-client?

O mecanismo DPI inicia no modo de compatibilidade por padrão para permitir o acesso normal de clientes mais antigos sem TLS.

O MSE Nacos suporta autenticação unidirecional ou mútua?

O MSE Nacos suporta apenas autenticação unidirecional: o cliente verifica o servidor, mas o servidor não verifica o cliente.

Por que os clientes usam o modo trustAll?

O modo trustAll simplifica a configuração do TLS. Para maior rigor na segurança, entre em contato com o suporte técnico do MSE (ID do grupo DingTalk: 43525005207) para obter o certificado CA oficial do MSE e especifique-o como arquivo CA confiável:

  • Arquivo de propriedades: nacos.remote.client.rpc.tls.trustCollectionChainPath=file:{filePath}

  • Parâmetro JVM: -Dnacos.remote.client.rpc.tls.trustCollectionChainPath=file:{filePath}

  • Variável de ambiente: nacos_remote_client_rpc_tls_trustCollectionChainPath=file:{filePath}

Nota

Prioridade dos parâmetros: arquivo de propriedades > parâmetros JVM > variáveis de ambiente.

Por que os parâmetros TLS injetados via arquivo de propriedades não têm efeito?

Os valores das propriedades TLS devem ser strings. Não passe valores booleanos.

  • Formato correto: properties.put("nacos.remote.client.rpc.tls.enable","true");

  • Formato incorreto: properties.put("nacos.remote.client.rpc.tls.enable",true);

O que fazer se o log NotSslRecordException: not an SSL/TLS record aparecer nos logs do nacos-client?

O servidor retornou uma resposta não-TLS porque o TLS não está ativado nele. Ative o TLS no servidor para resolver esse problema. Etapa 1: Modifique as configurações de parâmetros do Nacos.