Todos os produtos
Search
Central de documentação

Container Compute Service:Configure certificates for encrypted communication over HTTPS

Última atualização: Jun 29, 2026

Para criptografar o tráfego entre clientes e um listener do Application Load Balancer (ALB), associe um certificado SSL/TLS ao listener HTTPS. O ALB Ingress oferece três métodos de configuração de certificados: descoberta automática, Kubernetes Secrets e vinculação no nível do AlbConfig.

Escolha um método

Método

Armazenamento do certificado

Descoberta do certificado

Uso entre namespaces

Renovação do certificado

Descoberta automática

Certificate Management Service

Pelo nome de domínio vinculado ao certificado

Sim

Carregue um novo certificado ou renove o existente no Certificate Management Service e atualize o Ingress

Kubernetes Secret

Kubernetes Secret

Pelo nome do Secret

Não — limitado ao namespace do Secret

Atualize o Secret

Vinculação via AlbConfig

Certificate Management Service

Pelo ID do certificado

Use a descoberta automática se os certificados já estiverem adquiridos ou carregados no Certificate Management Service e você desejar vinculação automática baseada em nomes de domínio.

Use Kubernetes Secrets para gerenciar certificados dentro do cluster, por exemplo, com o cert-manager.

Use a vinculação via AlbConfig quando precisar de controle explícito sobre qual certificado associar a um listener específico ou quando um listener for compartilhado entre vários Ingresses.

Importante

Uma instância de ALB suporta no máximo 25 certificados. Essa contagem inclui todos os certificados associados a todos os listeners da instância, inclusive aqueles anexados por meio de Ingresses. Para mais detalhes, consulte Métodos para calcular cotas do ALB.

Compatibilidade ao combinar métodos

Combinação

Comportamento

Descoberta automática + Secret, mesmo domínio

O certificado do Secret tem precedência

Descoberta automática + Secret, domínios diferentes

Cada certificado é usado para seu respectivo domínio

Descoberta automática + AlbConfig, mesmo listener

Apenas o certificado do AlbConfig é utilizado

Secret + AlbConfig, mesmo listener

Ambos os certificados são utilizados

Pré-requisitos

Antes de começar, verifique se você possui:

Visão geral

image

Importante

Por padrão, um AlbConfig possui um listener HTTP na porta 80. Adicione um listener HTTPS e configure um certificado. Sem certificado, o listener HTTPS fica indisponível e o controlador do ALB Ingress falha.

Etapa 1: Adicionar um listener HTTPS ao AlbConfig

  1. Edite o AlbConfig:

    kubectl edit albconfig <albconfig-name>
  2. Adicione uma entrada de listener para a porta 443:

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb
    spec:
      config:
        addressAllocatedMode: Fixed
        addressType: Internet
        zoneMappings:
        - vSwitchId: vsw-bp19sXXXXXXX176iv
        - vSwitchId: vsw-bp1boXXXXXXXu74xz
      listeners:
      - port: 80
        protocol: HTTP
      - port: 443       # Adds the HTTPS listener; a certificate is required for this listener
        protocol: HTTPS

Etapa 2: Gerar um certificado autoassinado (opcional)

Ignore esta etapa se você já possuir um certificado do Certificate Management Service ou de uma CA.

Execute os comandos OpenSSL a seguir para gerar um certificado autoassinado:

openssl genrsa -out albtop-key.pem 4096
openssl req -subj "/CN=demo.alb.ingress.top" -sha256 -new -key albtop-key.pem -out albtop.csr
echo subjectAltName = DNS:demo.alb.ingress.top > extfile.cnf
openssl x509 -req -days 3650 -sha256 -in albtop.csr -signkey albtop-key.pem -out albtop-cert.pem -extfile extfile.cnf

Saída esperada:

Certificate request self-signature ok
subject=CN=demo.alb.ingress.top

Substitua demo.alb.ingress.top pelo seu nome de domínio.

Importante

Navegadores e clientes não confiam em certificados autoassinados. Use-os apenas para testes, nunca em produção.

Etapa 3: Criar recursos de exemplo

Além do AlbConfig, o ALB Ingress requer um Deployment, Service, IngressClass e Ingress para funcionar corretamente.

  1. Crie um arquivo chamado https-quickstart.yaml com o seguinte conteúdo:

    apiVersion: networking.k8s.io/v1
    kind: IngressClass
    metadata:
      name: https-ingressclass
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb   # Must match the name of your AlbConfig
    ---
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: https-ingress
    spec:
      ingressClassName: https-ingressclass
      rules:
      - host: demo.alb.ingress.top   # Replace with your domain name
        http:
          paths:
          - backend:
              service:
                name: https-svc
                port:
                  number: 443
            path: /
            pathType: Prefix
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: https-deploy
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: https-deploy
      template:
        metadata:
          labels:
            app: https-deploy
        spec:
          containers:
            - image: registry.cn-hangzhou.aliyuncs.com/acs-sample/old-nginx:latest
              imagePullPolicy: IfNotPresent
              name: https-deploy
              ports:
                - containerPort: 80
                  protocol: TCP
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: https-svc
    spec:
      ports:
        - name: port1
          port: 443
          protocol: TCP
          targetPort: 80
      selector:
        app: https-deploy
      sessionAffinity: None
      type: ClusterIP
  2. Se o AlbConfig tiver listeners HTTP e HTTPS, adicione a anotação listen-ports ao Ingress:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: https-ingress
      annotations:
        alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80},{"HTTPS": 443}]'
    spec:
      # ...
  3. Aplique os recursos:

    kubectl apply -f https-quickstart.yaml

Etapa 4: Configurar certificados

Escolha um dos métodos a seguir.

Método 1: Descoberta automática de certificados

Use este método se o certificado já estiver no Certificate Management Service e você quiser que o controlador do ALB Ingress o descubra automaticamente pela correspondência do nome de domínio.

  1. Carregue o certificado no Certificate Management Service. Para mais detalhes, consulte Carregar um certificado SSL.

  2. Edite o Ingress:

    kubectl edit ingress https-ingress
  3. Adicione o campo tls com o nome de domínio vinculado ao certificado:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: https-ingress
      namespace: default
    spec:
      ingressClassName: alb
      rules:
      - host: demo.alb.ingress.top
        http:
          # ...
      tls:
      - hosts:
        - demo.alb.ingress.top   # Set the value to the domain name bound to the certificate. The domain name must be the same as the domain name specified in the "rules: host" field.
Após essa configuração, a instância de ALB cria automaticamente um listener HTTPS:443 .

Método 2: Kubernetes Secret

Use este método para gerenciar certificados dentro do cluster, por exemplo, com o cert-manager.

  1. Codifique os arquivos de certificado e chave em Base64:

    echo -n `cat albtop-key.pem` | base64
    echo -n `cat albtop-cert.pem` | base64

    Crie um arquivo chamado albconfig.yaml e substitua os espaços reservados pela saída codificada em Base64:

    apiVersion: v1
    kind: Secret
    metadata:
      name: https-secret
    type: kubernetes.io/tls
    data:
      tls.key: |
        <base64-encoded-albtop-key.pem>
      tls.crt: |
        <base64-encoded-albtop-cert.pem>

    Aplique o Secret:

    kubectl apply -f https-secret.yaml
  2. Edite o Ingress:

    kubectl edit ingress https-ingress
  3. Adicione o campo tls com o nome do Secret e o nome de domínio:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: https-ingress
      namespace: default
    spec:
      ingressClassName: alb
      rules:
      - host: demo.alb.ingress.top
        http:
          # ...
      tls:
      - hosts:
        - demo.alb.ingress.top      # Must match rules.host exactly
        secretName: https-secret    # References the Secret that holds the certificate
Após configurar o Secret, o certificado é carregado automaticamente no Certificate Management Service com o nome default-https-secret-****** . A instância de ALB cria automaticamente um listener HTTPS:443 .

Método 3: Vinculação via AlbConfig

Use este método para vincular um certificado específico a um listener usando seu ID. Quando um certificado é vinculado no nível do listener, o Ingress deixa de usar a descoberta automática para esse listener.

  1. Carregue o certificado no Certificate Management Service. Para mais detalhes, consulte Carregar e compartilhar um certificado SSL.

  2. Obtenha o ID do certificado:

    1. Faça login no console do Certificate Management Service.

    2. No painel de navegação à esquerda, escolha Certificate Management > SSL Certificate Management.

    3. Na página SSL Certificate Management, clique em Manage Uploaded Certificates.

    4. Localize o certificado, clique em More na coluna Actions e visualize o campo CertIdentifier no painel Certificate Details.

  3. Edite o AlbConfig para vincular o certificado ao listener HTTPS:

    kubectl edit albconfig <albconfig-name>
    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb
    spec:
      config:
        addressType: Intranet
        name: xiaosha-alb-test
      listeners:
        - port: 80
          protocol: HTTP
        - port: 443
          protocol: HTTPS
          certificates:
            - CertificateId: 756****-cn-hangzhou   # The certificate ID from CertIdentifier
              IsDefault: true                       # Marks this as the default certificate for the listener
  4. Edite o Ingress para adicionar a anotação de porta do listener:

    kubectl edit ingress https-ingress
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      annotations:
        alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS": 443}]'   # Add {"HTTP": 80} to also handle HTTP traffic
      name: https-ingress
    spec:
      ingressClassName: https-ingressclass
      rules:
      - host: demo.alb.ingress.top
        http:
          paths:
          - backend:
              service:
                name: https-svc
                port:
                  number: 443
            path: /
            pathType: Prefix
Após a atualização do AlbConfig, a instância de ALB cria automaticamente um listener HTTPS:443 .

Etapa 5: Verificar o resultado

  1. Obtenha o endereço do Ingress:

    kubectl get ingress

    Saída esperada:

    NAME            CLASS                HOSTS                  ADDRESS                         PORTS     AGE
    https-ingress   https-ingressclass   demo.alb.ingress.top   alb-********.alb.aliyuncs.com   80, 443   83m

    Anote os valores nas colunas HOSTS e ADDRESS.

  2. Envie uma solicitação HTTPS para o Service de backend:

    curl -H HOST:demo.alb.ingress.top -k https://alb-********.alb.aliyuncs.com

    Substitua demo.alb.ingress.top e alb-********.alb.aliyuncs.com pelos valores obtidos na etapa anterior. Se o certificado estiver configurado corretamente, o comando retornará:

    old

Próximos passos