全部產品
Search
文件中心

Alibaba Cloud Service Mesh:為網域名稱添加認證

更新時間:Aug 06, 2024

ASM支援以圖形化的方式為網域名稱添加認證,便於您使用HTTPS等協議訪問網域名稱,提升服務網關的安全性。本文介紹如何為網域名稱添加認證。

前提條件

背景資訊

本文以網域名稱為aliyun.commyexampleapp服務為例,為aliyun.com網域名稱添加認證。添加成功後,您可以通過ASM網關使用HTTPS協議訪問網域名稱為aliyun.commyexampleapp服務。

操作步驟

  1. 建立樣本服務myexampleapp。

    1. 使用以下內容,建立myexample-nginx.conf

      本樣本服務基於Nginx實現,您需要為Nginx伺服器建立設定檔。以網域名稱aliyun.com的服務為例,以下內容定義請求根路徑直接返回字樣Welcome to aliyun.com!及狀態代碼200

      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;
          }
        }
      }
    2. 執行以下命令,建立Nginx伺服器的配置項。

      kubectl create configmap myexample-nginx-configmap --from-file=nginx.conf=./myexample-nginx.conf
    3. 使用以下內容,建立myexampleapp.yaml

      展開查看myexampleapp.yaml

      apiVersion: v1
      kind: Service
      metadata:
        name: myexampleapp
        labels:
          app: myexampleapp
      spec:
        ports:
        - port: 80
          protocol: TCP
        selector:
          app: myexampleapp
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: myexampleapp
      spec:
        selector:
          matchLabels:
            app: myexampleapp
        replicas: 1
        template:
          metadata:
            labels:
              app: myexampleapp
          spec:
            containers:
            - name: nginx
              image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
              ports:
              - containerPort: 80
              volumeMounts:
              - name: nginx-config
                mountPath: /etc/nginx
                readOnly: true
            volumes:
            - name: nginx-config
              configMap:
                name: myexample-nginx-configmap
    4. 執行以下命令,建立網域名稱為aliyun.com的內部服務。

      kubectl apply -f myexampleapp.yaml
  2. 在ASM網關中匯入myexampleapp服務。

    1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

    2. 網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇ASM網關 > 入口網關

    3. 入口網關頁面,單擊目標網關的名稱。

    4. 網關詳情頁面左側導覽列,單擊上遊服務

    5. 上遊服務頁面,單擊匯入服務

    6. 匯入服務頁面,選擇命名空間,選中myexampleapp服務,單擊上遊服務表徵圖,然後單擊確認

  3. 建立認證和私密金鑰。

    1. openssl中執行以下命令,建立根憑證和私密金鑰。

      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
    2. 執行以下命令,為aliyun.com伺服器產生認證和私密金鑰。

      • 執行以下命令,建立認證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
      • 執行以下命令,建立私密金鑰aliyun.com.key

        openssl req -out aliyun.com.csr -newkey rsa:2048 -nodes -keyout aliyun.com.key -subj "/CN=aliyun.com/O=myexample organization"
  4. 添加認證和私密金鑰掛載卷到ASM網關。

    說明
    • ASM執行個體從1.17版本起,支援使用認證管理頁面的認證。建議您儘快將認證遷移至認證管理,即直接在認證管理頁面建立一個同名認證,自動會覆蓋已建立的認證,無需手動刪除。關於升級執行個體的具體操作,請參見升級ASM執行個體

    • 認證管理頁面的認證會自動在資料面建立同名Secret。若已存在同名Secret,則會用新內容覆蓋該Secret。

    ASM執行個體版本為1.17以下

    1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

    2. 網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇ASM網關 > 入口網關

    3. 入口網關頁面,單擊目標網關的名稱,然後在網關詳情頁面左側導覽列,單擊網域名稱/認證

    4. 網域名稱/認證頁面,單擊認證頁簽,然後單擊建立

    5. 建立認證頁面,輸入名稱,將aliyun.com.crt的內容複寫到認證文字框,aliyun.com.key的內容複寫到私密金鑰文字框,然後單擊建立

    ASM執行個體版本為1.17及以上

    1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

    2. 網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇ASM網關 > 認證管理

    3. 認證管理頁面,單擊建立,然後在認證資訊面板,配置相關資訊,單擊確定

      配置項

      說明

      名稱

      輸入認證的名稱,本樣本為myexample-credential

      密鑰憑證

      步驟3產生的aliyun.com.crt內容。

      私密金鑰

      步驟3產生的aliyun.com.key內容。

  5. 綁定網域名稱與認證。

    1. 登入ASM控制台,在左側導覽列,選擇服務網格 > 網格管理

    2. 網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇ASM網關 > 入口網關

    3. 入口網關頁面,單擊目標網關的名稱,然後在網關詳情頁面左側導覽列,單擊網域名稱/認證

    4. 網域名稱/認證頁面的網域名稱頁簽,單擊建立

    5. 建立網域名稱頁面,設定網域名稱*.aliyun.com協議HTTPS,輸入連接埠名稱連接埠,選擇認證,選中是否使用TLS保護串連,然後單擊建立

      說明

      選中是否使用TLS保護串連,表示只有TLS請求才能訪問到網域名稱。

  6. 執行以下命令,使用HTTPS協議訪問aliyun.com,驗證綁定網域名稱與認證是否成功。

    curl -k -H Host:www.aliyun.com --resolve www.aliyun.com:443:<ASM網關地址>  https://www.aliyun.com

    預期輸出:

    Welcome to aliyun.com!

    如果使用HTTPS協議訪問aliyun.com成功,表明綁定網域名稱與認證成功。