Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Configure um certificado HTTPS

Última atualização: Aug 27, 2026

A configuração de um certificado HTTPS ativa a criptografia Transport Layer Security (TLS)/Secure Sockets Layer (SSL) para service implantados em um gateway de MSE Ingress. Essa etapa é fundamental para proteger dados em aplicações web modernas e service de API. O certificado HTTPS garante a criptografia dos dados transmitidos entre os clientes e o gateway, impedindo que partes não autorizadas roubem ou adulterem informações sensíveis. Além disso, oferece uma defesa robusta contra ataques do tipo man-in-the-middle.

Pré-requisitos

Métodos de configuração

O gateway de MSE Ingress oferece suporte a dois métodos para configurar um certificado HTTPS: uso de um Kubernetes Secret ou utilização do MSE console.

Item

Kubernetes Secret

MSE console

Casos de uso

  • Gerenciamento declarativo de certificados.

  • Automação do gerenciamento de certificados com pipelines de CI/CD ou ferramentas como cert-manager.

  • Gerenciamento centralizado de certificados no console do Certificate Management Service.

  • Aplicação de um único certificado em vários produtos cloud, como Web Application Firewall (WAF) e Server Load Balancer (SLB).

  • Implantação ou substituição de certificados em lote.

Prioridade

Baixa

Alta

Cross-namespace

Não suportado.

Suportado.

Atualização de certificado

Substitua o conteúdo do Kubernetes Secret.

Substitua o certificado no MSE console ou implante um novo certificado no console do Certificate Management Service.

Implantar o service de backend

  1. Faça login no console do Container Service for Kubernetes (ACK). No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do cluster desejado. No painel de navegação à esquerda, escolha Workloads > Deployments.

  3. Na página Deployments, clique em Create from YAML. Utilize o YAML abaixo para implantar um Deployment httpbin e um Service httpbin.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: httpbin
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: httpbin
      template:
        metadata:
          labels:
            app: httpbin
            version: v1
        spec:
          containers:
            - image: registry.cn-hangzhou.aliyuncs.com/mse-ingress/go-httpbin
              args:
                - "--version=v1"
              imagePullPolicy: Always
              name: httpbin
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: httpbin
      namespace: default
    spec:
      ports:
        - port: 8080
          protocol: TCP
      selector:
        app: httpbin

Configure o certificado HTTPS

Kubernetes Secret

É possível configurar um certificado HTTPS para um domínio referenciando um Kubernetes Secret por meio da semântica nativa de Ingress.

  1. Prepare um certificado de domínio. Este exemplo utiliza um certificado autoassinado.

    Nota

    Para ambientes de produção, é obrigatório usar uma chave privada e um certificado reais para o seu negócio. Baixe a chave e o certificado do seu domínio no console do Certificate Management Service.

    1. Execute o comando a seguir para gerar um arquivo de certificado tls.crt e um arquivo de chave privada tls.key.

      openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=foo.bar.com/O=foo.bar.com"
    2. Crie um Secret para armazenar o certificado TLS.

      1. Faça login no console do Container Service for Kubernetes (ACK). No painel de navegação à esquerda, clique em Clusters.

      2. Na página Clusters, clique no nome do cluster desejado. No painel de navegação à esquerda, escolha Configurations > Secrets.

      3. Clique em Create. No painel Create, defina o Name como tls-test, selecione o Type como TLS Certificate, copie o conteúdo dos arquivos tls.crt e tls.key criados nas caixas de entrada correspondentes e clique em Create.

  2. Crie um MSE Ingress e configure o certificado HTTPS para o domínio foo.bar.com.

    1. No painel de navegação à esquerda, escolha Network > Ingresses.

    2. Na página Ingresses, clique em Create Ingress. Na caixa de diálogo Create Ingress, configure a rota.

      Parâmetro

      Descrição

      Exemplo

      Gateway type

      Selecione MSE Ingress. Para comparar os diferentes tipos de gateway, consulte Comparison of Nginx Ingress, ALB Ingress, APIG Ingress, and MSE Ingress.

      MSE Ingress

      Name

      Insira um nome personalizado para o Ingress.

      test

      IngressClass

      Selecione a classe de recurso relevante.

      mse

      Rule

      Clique em + Add Rule para adicionar regras de roteamento.

      • Domain name: Um nome de domínio personalizado.

      • Path mapping: Configure os seguintes parâmetros.

        • Path: O caminho da URL para acessar o service.

        • Match rule:

          • Prefix (prefix-based match): Corresponde ao prefixo do caminho da URL da requisição.

          • Exact (exact match): Corresponde exatamente ao caminho da URL da requisição.

          • Default (implementation-specific): O comportamento é determinado pela lógica específica do controlador de Ingress.

          Para mais informações, consulte Advanced features of ALB Ingresses.

        • Service: O Kubernetes Service de destino.

        • Port: A porta a ser exposta para o service.

      • O Ingress suporta múltiplos caminhos sob o mesmo nome de domínio. Clique em + Add Path para adicionar mais caminhos.

      • Domain name: foo.bar.com

      • Path mapping:

        • Path: /

        • Match rule: Prefix (prefix-based match)

        • Service: httpbin

        • Port: 8080

      TLS configuration

      Ative o TLS para configurar um service de roteamento seguro.

      • Domain name: Um nome de domínio personalizado.

      • Secret: Selecione o Secret apropriado.

        Note

        Deixar este campo vazio ativa a descoberta automática de certificados.

        Para criar um novo Secret:

        1. À direita do campo Secret, clique em Create.

        2. Na caixa de diálogo Create Secret, especifique um Name, Cert e Key para o Secret e clique em OK.

        3. Na lista suspensa Secret, selecione o Secret criado.

      Clique em + Add TLS Configuration para definir múltiplas configurações TLS.

      • Domain name: foo.bar.com

      • Secret: tls-test

    3. Mantenha os valores padrão para as demais configurações e clique em OK na página Create Ingress.

  3. Teste o tráfego HTTPS. Execute o comando a seguir, substituindo x.x.x.x pelo endereço IP real do seu gateway. Você encontra o endereço IP do gateway na página de lista de Ingresses.

    Nota

    Este exemplo usa um certificado autoassinado e um domínio não registrado em um provedor DNS. Portanto, é necessário usar a flag --resolve para resolver manualmente o nome do domínio para o endereço IP do gateway e a flag -k para ignorar a validação do certificado.

    curl -v -k https://foo.bar.com/version --resolve "foo.bar.com:443:x.x.x.x"

    A saída esperada é a seguinte:

    * Connected to foo.bar.com (X.X.X.X) port 443 (#0)
    * ALPN, offering h2
    * ALPN, offering http/1.1
    * successfully set certificate verify locations:
    *   CAfile: /etc/ssl/cert.pem
      CApath: none
    * TLSv1.2 (OUT), TLS handshake, Client hello (1):
    * TLSv1.2 (IN), TLS handshake, Server hello (2):
    * TLSv1.2 (IN), TLS handshake, Certificate (11):
    * TLSv1.2 (IN), TLS handshake, Server key exchange (12):
    * TLSv1.2 (IN), TLS handshake, Server finished (14):
    * TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
    * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
    * TLSv1.2 (OUT), TLS handshake, Finished (20):
    * TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
    * TLSv1.2 (IN), TLS handshake, Finished (20):
    * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
    * ALPN, server accepted to use http/1.1
    * Server certificate:
    *  subject: CN=foo.bar.com; O=foo.bar.com
    *  start date: Jan 17 06:47:23 2024 GMT
    *  expire date: Jan 16 06:47:23 2025 GMT
    *  issuer: CN=foo.bar.com; O=foo.bar.com
    *  SSL certificate verify result: self signed certificate (18), continuing anyway.
    > GET /version HTTP/1.1
    > Host: foo.bar.com
    > User-Agent: curl/7.64.1
    > Accept: */*
    >
    < HTTP/1.1 200 OK
    < date: Wed, 17 Jan 2024 07:49:39 GMT
    < content-length: 53
    < content-type: text/plain; charset=utf-8
    < req-cost-time: 3
    < req-arrive-time: 1705477779046
    < resp-start-time: 1705477779049
    < x-envoy-upstream-service-time: 2
    < server: istio-envoy
    <
    version: v1
    hostname: httpbin-xxxxxx

MSE console

Configure um certificado para um domínio diretamente no MSE console. Este método dispensa a referência a um Kubernetes Secret no objeto Ingress; basta configurar as regras de roteamento.

Importante

Para o mesmo nome de domínio, o método via MSE console tem precedência sobre o método Kubernetes Secret. Se você configurar certificados para o mesmo domínio tanto no MSE console quanto em um recurso Kubernetes Ingress, o certificado do console será utilizado.

  1. Prepare um certificado de domínio e faça o upload dele no Certificate Management Service da Alibaba Cloud. Para mais informações, consulte Upload, sync, and share SSL certificates. Caso seu certificado já esteja hospedado no Certificate Management Service, pule esta etapa.

  2. Crie um domínio e configure seu certificado.

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

    2. No painel de navegação à esquerda, escolha Cloud-native Gateway > Gateways e clique no ID da instância de gateway desejada.

    3. No painel de navegação à esquerda, clique em Routes e selecione a aba Domain.

    4. Clique em Add domain name. Adicione um Domain name, defina o Protocol como HTTPS e selecione o certificado correspondente.

  3. Crie um service.

    1. Na página Route Management da instância MSE, selecione a aba Service e clique em Create service.

    2. Defina Service Sources como Container service, selecione os Namespaces apropriados, marque o service httpbin criado anteriormente na Service list e clique em OK.

  4. Crie uma rota.

    1. Na página Route Management da instância MSE, selecione a aba Route e clique em Create route.

    2. Em Domain name, selecione o domínio adicionado na Etapa 2. Em Backend service, selecione o service criado na Etapa 3 e clique em Save and publish.

  5. Teste o tráfego HTTPS. Execute o comando a seguir, substituindo x.x.x.x pelo endereço IP real do seu gateway. Você encontra o endereço IP do gateway na página .

    Nota

    Se estiver usando um certificado autoassinado e o domínio não estiver registrado em um provedor DNS, use a flag --resolve para resolver manualmente o nome do domínio para o endereço IP do gateway e a flag -k para ignorar a validação do certificado.

    Substitua <Your-DomainName> pelo seu nome de domínio real.

    curl -v -k https://<Your-DomainName>/version --resolve "<Your-DomainName>:443:x.x.x.x"

    A saída esperada é a seguinte:

    * Connected to ********** (X.X.X.X) port 443 (#0)
    * ALPN, offering h2
    * ALPN, offering http/1.1
    * successfully set certificate verify locations:
    *   CAfile: /etc/ssl/cert.pem
      CApath: none
    * TLSv1.2 (OUT), TLS handshake, Client hello (1):
    * TLSv1.2 (IN), TLS handshake, Server hello (2):
    * TLSv1.2 (IN), TLS handshake, Certificate (11):
    * TLSv1.2 (IN), TLS handshake, Server key exchange (12):
    * TLSv1.2 (IN), TLS handshake, Server finished (14):
    * TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
    * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
    * TLSv1.2 (OUT), TLS handshake, Finished (20):
    * TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
    * TLSv1.2 (IN), TLS handshake, Finished (20):
    * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
    * ALPN, server accepted to use http/1.1
    * Server certificate:
    *  subject: CN=*********; O=**********
    *  start date: Jan 17 06:47:23 2024 GMT
    *  expire date: Jan 16 06:47:23 2025 GMT
    *  issuer: CN=**********; O=**********
    *  SSL certificate verify result: self signed certificate (18), continuing anyway.
    > GET /version HTTP/1.1
    > Host: **********
    > User-Agent: curl/7.64.1
    > Accept: */*
    >
    < HTTP/1.1 200 OK
    < date: Wed, 17 Jan 2024 08:16:27 GMT
    < content-length: 46
    < content-type: text/plain; charset=utf-8
    < req-cost-time: 5
    < req-arrive-time: 1705479387567
    < resp-start-time: 1705479387573
    < x-envoy-upstream-service-time: 4
    < server: istio-envoy
    <
    version: v1
    hostname: httpbin-xxxxxx