日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

配置HTTPS證書以實現加密通信

使用HTTPS協議的監聽時,您需要配置SSL/TLS證書以確保監聽與客戶端的加密連接。本文介紹ALB Ingress支持的多種配置證書的方法。

證書配置方式對比

ALB Ingress支持三種配置證書的方式:自動發現證書、Secret證書和AlbConfig指定證書。三種配置方式的對比如下。

對比項

自動發現證書

AlbConfig指定證書

Secret證書

證書存儲方式

阿里云數字證書中心。

集群內的Secret資源。

證書發現方式

使用域名匹配自動發現。

通過數字證書中心生成的證書ID發現。

指定集群的內的Secret資源發現。

適用場景

適用于已在阿里云數字證書中心購買證書或上傳證書的場景。

適用于需要在集群內部管理證書的場景,例如使用cert-manager類的管理工具時。

跨命名空間使用

支持。

不支持,僅支持在Secret資源所處的命名空間使用。

更新證書方式

數字證書管理服務控制臺上傳新證書或續費證書后,更新Ingress資源。

更新Secret資源的內容。

重要

單個ALB實例支持的證書上限為25個。通常情況下,單個ALB實例所使用的證書數量等于此ALB實例所有監聽的證書數量之和(包括關聯在Ingress資源上的證書)。具體的計算方法,請參見ALB配額計算方式

證書管理方式兼容性說明

如果同時使用了多種證書配置方式,證書的管理方式和兼容性如下所示。

證書配置情況

說明

在Ingress中同時使用了自動發現證書和Secret證書。

  • 如果自動發現證書和Secret證書屬于同一域名,那么Secret證書具有更高的優先級。

  • 如果自動發現證書和Secret證書屬于不同的域名,那么ALB Ingress Controller會為每個域名分別選擇相應的證書。

同時使用了自動發現證書和AlbConfig指定證書,并且它們關聯的Listener相同。

如果在AlbConfig中指定了證書,則此Listener不會使用自動發現證書。

同時使用了Secret證書和AlbConfig指定證書,并且它們關聯的Listener相同。

AlbConfig指定證書和Secret證書是可以完全兼容的,并且可以同時使用。

前提條件

已獲取到可信的數字證書。您可以從以下幾個途徑獲取數字證書:

  • 從阿里云數字證書中心購買證書。具體操作,請參見購買SSL證書

  • 從其他CA購買的證書。

  • (可選)參照本文中的生成自簽名證書步驟生成自簽名證書。

操作流程

image

步驟一:AlbConfig中創建HTTPS監聽

默認AlbConfig配置一個監聽端口為80、協議為HTTP的監聽,您還需要創建HTTPS監聽,并確保配置相關證書。如果未配置證書,HTTPS監聽則不可用,Controller會存在由于缺少證書導致的失敗事件。更多詳情,請參見創建監聽

控制臺

  1. 登錄容器服務管理控制臺,在左側導航欄選擇集群

  2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇工作負載 > 自定義資源

  3. 資源對象瀏覽器頁簽的搜索框中,搜索AlbConfig,然后單擊搜索結果AlbConfig

  4. AlbConfig面板中,找到名稱為alb(默認),或其他AlbConfig的資源,單擊其右側操作列下的YAML編輯

  5. 查看YAML面板,新增spec.listeners.portspec.listeners.protocol字段。然后單擊確定

    image

kubectl

  1. 使用以下命令,編輯albconfig配置文件。

    kubectl edit albconfig <Albconfig_Name>
  2. 根據您的需求修改配置,可以在Albconfig中設置portprotocol,以創建相應的監聽。

    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         # 新增。
        protocol: HTTPS   # 新增,protocol的可選項為HTTP、HTTPS、QUIC。

(可選)步驟二:生成自簽名證書

如果還未獲取證書,執行以下命令可以通過OpenSSL創建自簽名證書。

重要
  • 由于缺乏可靠的CA認證,自簽名證書在瀏覽器和客戶端中默認不受信任,通常會導致客戶訪問時收到安全警告。本文中生成的自簽名證書僅作為示例,請勿在生產環境中使用。

  • 命令中的demo.alb.ingress.top是生成的自簽名證書所關聯的域名。如果您已擁有自己的域名,請進行替換。

openssl genrsa -out albtop-key.pem 4096
openssl req -subj "/CN=demo.alb.ingress.top" -sha256  -new -key albtop-key.pem -out albtop.csr  # demo.alb.ingress.top可替換為您的域名
echo subjectAltName = DNS:demo.alb.ingress.top > extfile.cnf  # demo.alb.ingress.top可替換為您的域名
openssl x509 -req -days 3650 -sha256 -in albtop.csr -signkey albtop-key.pem -out albtop-cert.pem -extfile extfile.cnf
  1. 執行以下命令,查看證書和私鑰。

    cat albtop-key.pem     # 私鑰。
    cat albtop-cert.pem   # 證書。
  2. 執行以下命令,使用Base64對證書和私鑰編碼。

    echo -n `cat albtop-key.pem` | base64     # Base64加密私鑰文件。
    echo -n `cat albtop-cert.pem` | base64   # Base64加密證書文件.

步驟三:創建示例資源

控制臺

除了AlbConfig外,ALB Ingress還需要Deployment、Service、IngressClass和Ingress這4種資源才能正常工作,您可以使用以下步驟快速創建這4種資源。

  1. 登錄容器服務管理控制臺,在左側導航欄選擇集群

  2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇工作負載 > 無狀態

  3. 單擊使用YAML創建資源

    1. 示例模板:選擇自定義

    2. 模板:輸入YAML配置文件代碼。該配置文件用于Deployment、Service、IngressClass和Ingress這4種資源。

      展開查看YAML配置

      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 # 修改為AlbConfig資源的名稱。
      ---
      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: https-ingress
      spec:
        ingressClassName: https-ingressclass
        rules:
        - host: demo.alb.ingress.top # demo.alb.ingress.top替換為證書關聯的域名。
          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
    3. 配置完成后單擊創建,頁面將提示創建成功

    4. 檢查Deployment和Service創建成功:

      1. 在左側導航欄,選擇工作負載 > 無狀態。可查看到名稱為https-deploy的Deployment已部署。

      2. 在左側導航欄,選擇網絡 > 服務。可查看到名稱為的https-svc的Service已部署。

      3. 在左側導航欄,選擇網絡 > 路由可查看到名稱為的https-ingress的Ingress已部署。

kubectl

除了AlbConfig外,ALB Ingress還需要Deployment、Service、IngressClass和Ingress這4種資源才能正常工作,您可以使用以下的示例快速創建這4種資源。

  1. 創建https-quickstart.yaml文件,并將以下內容拷貝到該文件中并保存。

    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 # 修改為AlbConfig資源的名稱。
    ---
    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. 執行以下命令創建。

    kubectl apply -f https-quickstart.yaml

步驟四:配置證書

使用自動發現證書

控制臺

在將證書上傳到阿里云數字證書中心后,您可以通過在Ingress中的TLS配置證書關聯的域名,使ALB Ingress自動發現并使用已上傳的證書。

  1. 將自簽名證書上傳至阿里云數字證書中心。具體操作,請參見上傳和共享SSL證書

  2. 登錄容器服務管理控制臺,在左側導航欄選擇集群

  3. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇網絡 > 路由

  4. 路由頁面,單擊目標Ingress其右側操作列下的更新,然后在編輯 Ingress對話框中,配置如下參數。

    配置項

    說明

    示例值

    TLS配置

    開啟TLS配置開關,配置安全的路由服務。

    • 域名:自定義域名。

    • 保密字典:根據需要選擇對應的保密字典。

      說明

      值為空時,為自動發現形式配置證書。

      如果您需要創建Secret,請執行如下操作。

      1. 保密字典右側,單擊創建

      2. 創建 Secret對話框,自定義保密字典的名稱CertKey,然后單擊確定

      3. 保密字典的下拉框,選擇已創建的Secret。

    單擊+ 新增TLS配置,可配置多條TLS。

    • 域名:demo.alb.ingress.top

    • 保密字典:不填值,為空。

    (可選)注解

    您可自定義注解名稱和值,也可根據名稱選擇或搜索要配置的注解。Ingress的注解請參見Ingress支持的Annotation。單擊+添加注解,可對Ingress無上限地添加注解。

    無需配置。

    說明

    如需同時監聽HTTP/HTTPS協議時需要添加如下注釋。

    • 名稱alb.ingress.kubernetes.io/listen-ports

    • 輸入值[{"HTTP": 80},{"HTTPS": 443}]

kubectl

在將證書上傳到阿里云數字證書中心后,您可以通過在Ingress中的tls字段里填入證書關聯的域名,使ALB Ingress自動發現并使用已上傳的證書。

  1. 將自簽名證書上傳至阿里云數字證書中心。具體操作,請參見上傳和共享SSL證書

  2. 執行以下命令編輯Ingress。

    kubectl edit ingress https-ingress
  3. 添加tls字段,填入證書關聯的域名。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
    #  annotations:
    #    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80},{"HTTPS": 443}]'  # 如果需要同時監聽HTTP和HTTPS協議時需要添加此注釋。
      name: https-ingress
    spec:
      ingressClassName: https-ingressclass
      rules:
      - host: demo.alb.ingress.top # demo.alb.ingress.top替換為證書關聯的域名
        http:
          paths:
          - backend:
              service:
                name: https-svc
                port:
                  number: 443
            path: /
            pathType: Prefix
      tls:                     # 新增。   
      - hosts:                 # 新增。
        - demo.alb.ingress.top # 新增,需要和“rules: host“字段中的域名保持一致,同時是證書關聯的域名。

使用Secret證書

控制臺

  1. 登錄容器服務管理控制臺,在左側導航欄選擇集群

  2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇網絡 > 路由

  3. 路由頁面,單擊目標Ingress其右側操作列下的更新,然后在編輯 Ingress對話框中,配置如下參數。

    配置項

    說明

    示例值

    TLS配置

    開啟TLS配置開關,配置安全的路由服務。

    • 域名:自定義域名。

    • 保密字典:根據需要選擇對應的保密字典。

      說明

      值為空時,為自動發現形式配置證書。

      如果您需要創建Secret,請執行如下操作。

      1. 保密字典右側,單擊創建

      2. 創建 Secret對話框,自定義保密字典的名稱CertKey,然后單擊確定

      3. 保密字典的下拉框,選擇已創建的Secret。

    單擊+ 新增TLS配置,可配置多條TLS。

    • 域名:demo.alb.ingress.top

    • 保密字典:https-secret

      • Secret名稱:https-secret

      • Cert:非Base64加密自簽證書。

      • Key:非Base64加密自簽私鑰。

    (可選)注解

    您可自定義注解名稱和值,也可根據名稱選擇或搜索要配置的注解。Ingress的注解請參見Ingress支持的Annotation。單擊+添加注解,可對Ingress無上限地添加注解。

    無需配置。

    說明

    如需同時監聽HTTP/HTTPS協議時需要添加如下注釋。

    • 名稱alb.ingress.kubernetes.io/listen-ports

    • 輸入值[{"HTTP": 80},{"HTTPS": 443}]

kubectl

您可以將證書保存在集群的Secret資源中,并在Ingress中使用。

  1. 創建Secret

    1. 使用以下內容創建https-secret.yaml,示例如下,對應的證書和私鑰編碼請參見步驟二使用Base64對證書和私鑰編碼

      apiVersion: v1
      kind: Secret
      metadata:
        name: https-secret
      type: kubernetes.io/tls
      data:
        tls.key: |  # Base64編碼后的albtop-key.pem。
          {base64 albtop-key.pem}     
        tls.crt: |  # Base64編碼后的albtop-cert.pem。
          {base64 albtop-cert.pem}     
    2. 執行以下命令,創建Secret。

      kubectl apply -f https-secret.yaml
  2. 編輯Ingress。

    1. 執行以下命令編輯Ingress。

      kubectl edit ingress https-ingress
    2. 添加tls字段,填入證書關聯的域名,以及secret資源的名稱。

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
      #  annotations:
      #    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80},{"HTTPS": 443}]'  # 如果需要同時監聽HTTP和HTTPS協議時需要添加此注釋。
        name: https-ingress
        namespace: default
      spec:
        ingressClassName: alb
        rules:
        - host: demo.alb.ingress.top # demo.alb.ingress.top替換為證書關聯的域名。
          http:
            paths:
            - backend:
                service:
                  name: https-svc
                  port:
                    number: 443
              path: /
              pathType: Prefix
        tls:                         # 新增。
        - hosts:
          - demo.alb.ingress.top     # 新增,需要和“rules: host“字段中的域名保持一致,同時是證書關聯的域名。
          secretName: https-secret   # 新增,創建證書密鑰。

使用AlbConfig指定證書

控制臺

  1. 獲取自簽證書的CertIdentifier。

    在將證書上傳到阿里云數字證書中心后,您可以在AlbConfig中的監聽的CertificateId字段填入證書的ID,以便為監聽關聯已上傳的證書。

    說明

    如果監聽配置了證書,那么此監聽下的Ingress將不再使用自動發現證書。

    1. 上傳自簽名證書至阿里云數字證書中心。具體操作,請參見上傳和共享SSL證書

    2. 獲取證書ID。

      1. 登錄數字證書管理服務控制臺

      2. 在左側導航欄,選擇證書管理 > SSL證書管理

      3. SSL證書頁面,單擊上傳證書頁簽,在目標證書操作列下單擊更多

        證書詳情面板中獲取CertIdentifier

  2. 關聯證書至AlbConfig。

    1. 登錄容器服務管理控制臺,在左側導航欄選擇集群

    2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇工作負載 > 自定義資源

    3. 資源對象瀏覽器頁簽的搜索框中,搜索AlbConfig,然后單擊搜索結果AlbConfig

    4. AlbConfig面板中,找到名稱為alb(默認),或其他AlbConfig的資源,單擊其右側操作列下的YAML編輯

    5. 查看YAML面板,新增如下字段。然后單擊確定

      字段

      描述

      示例值

      certificates

      證書信息。

      -

      CertificateId

      步驟1獲取證書的CertIdentifier。

      756****-cn-hangzhou

      IsDefault

      是否為默認證書。

      true

      image

  3. 編輯Ingress。

    1. 登錄容器服務管理控制臺,在左側導航欄選擇集群

    2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇網絡 > 路由

    3. 路由頁面,單擊目標Ingress其右側操作列下的更新,然后在編輯 Ingress對話框中,配置如下參數。

      配置項

      說明

      示例值

      注解

      您可自定義注解名稱和值,也可根據名稱選擇或搜索要配置的注解。Ingress的注解請參見Ingress支持的Annotation。單擊+添加注解,可對Ingress無上限地添加注解。

      • 名稱alb.ingress.kubernetes.io/listen-ports

      • 輸入值[{"HTTPS": 443}]

        說明

        如果需要同時監聽HTTP和HTTPS協議替換為[{"HTTP": 80},{"HTTPS": 443}]

kubectl

在將證書上傳到阿里云數字證書中心后,您可以在AlbConfig中的監聽的CertificateId字段填入證書的ID,以便為監聽關聯已上傳的證書。

說明

如果監聽配置了證書,那么此監聽下的Ingress將不再使用自動發現證書。

  1. 上傳自簽名證書至阿里云數字證書中心。具體操作,請參見上傳和共享SSL證書

  2. 獲取證書ID。

    1. 登錄數字證書管理服務控制臺

    2. 在左側導航欄,選擇證書管理 > SSL證書管理

    3. SSL證書頁面,單擊上傳證書頁簽,在目標證書操作列下單擊更多

      證書詳情面板中獲取CertIdentifier

關聯證書至AlbConfig。

  1. 執行以下命令編輯AlbConfig。

    kubectl edit albconfig <ALBCONFIG_NAME> # <ALBCONFIG_NAME>替換AlbConfig的名稱
  2. 在監聽中添加certificates字段,填入之前步驟中獲取的CertIdentifier

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb
    spec:
      config:
        addressType: Intranet
        name: xiaosha-alb-test
      listeners:
        - port: 80
          protocol: HTTP
        - certificates:
            - CertificateId: 756****-cn-hangzhou   # 證書的CertIdentifier。
              IsDefault: true                      # 是否為默認證書。
          port: 443
          protocol: HTTPS
  3. 執行以下命令編輯Ingress。

    kubectl edit ingress https-ingress
  4. 新增alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS": 443}]'注釋。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      annotations:
        alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS": 443}]'  # 新增,如果需要同時監聽HTTP和HTTPS協議時修改為'[{"HTTP": 80},{"HTTPS": 443}]' 。
      name: https-ingress
    spec:
      ingressClassName: https-ingressclass
      rules:
      - host: demo.alb.ingress.top # demo.alb.ingress.top替換為證書關聯的域名
        http:
          paths:
          - backend:
              service:
                name: https-svc
                port:
                  number: 443
            path: /
            pathType: Prefix

步驟五:效果驗證

通過使用HTTPS協議訪問服務,可以驗證配置證書的效果。

  1. 執行以下命令,查看Ingress信息。

    kubectl get ingress

    預期輸出:

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

    記錄下HOSTSADDRESS部分的值,以便后續步驟使用。

  2. 執行以下命令,使用HTTPS協議連接ALB Ingress訪問后端服務。其中的demo.alb.ingress.topalb-********.alb.aliyuncs.com請替換為在上一步中得到的值。

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

    預期輸出如下,則表明證書配置成功:

    old

相關文檔