ASM支援以圖形化的方式為網域名稱添加認證,便於您使用HTTPS等協議訪問網域名稱,提升服務網關的安全性。本文介紹如何為網域名稱添加認證。
前提條件
已在ASM執行個體關聯的叢集中部署應用,且ASM執行個體為企業版或旗艦版。
已部署入口網關。具體操作,請參見建立入口網關。
已為命名空間注入Sidecar。具體操作,請參見開啟Sidecar自動注入。
已擷取ASM網關地址。具體操作,請參見擷取ASM網關地址。
背景資訊
本文以網域名稱為aliyun.com的myexampleapp服務為例,為aliyun.com網域名稱添加認證。添加成功後,您可以通過ASM網關使用HTTPS協議訪問網域名稱為aliyun.com的myexampleapp服務。
操作步驟
建立樣本服務myexampleapp。
使用以下內容,建立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; } } }
執行以下命令,建立Nginx伺服器的配置項。
kubectl create configmap myexample-nginx-configmap --from-file=nginx.conf=./myexample-nginx.conf
使用以下內容,建立myexampleapp.yaml。
執行以下命令,建立網域名稱為aliyun.com的內部服務。
kubectl apply -f myexampleapp.yaml
在ASM網關中匯入myexampleapp服務。
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 。
在入口網關頁面,單擊目標網關的名稱。
在網關詳情頁面左側導覽列,單擊上遊服務。
在上遊服務頁面,單擊匯入服務。
在匯入服務頁面,選擇命名空間,選中myexampleapp服務,單擊表徵圖,然後單擊確認。
建立認證和私密金鑰。
在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
執行以下命令,為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"
添加認證和私密金鑰掛載卷到ASM網關。
說明ASM執行個體從1.17版本起,支援使用認證管理頁面的認證。建議您儘快將認證遷移至認證管理,即直接在認證管理頁面建立一個同名認證,自動會覆蓋已建立的認證,無需手動刪除。關於升級執行個體的具體操作,請參見升級ASM執行個體。
認證管理頁面的認證會自動在資料面建立同名Secret。若已存在同名Secret,則會用新內容覆蓋該Secret。
ASM執行個體版本為1.17以下
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 。
在入口網關頁面,單擊目標網關的名稱,然後在網關詳情頁面左側導覽列,單擊網域名稱/認證。
在網域名稱/認證頁面,單擊認證頁簽,然後單擊建立。
在建立認證頁面,輸入名稱,將
aliyun.com.crt
的內容複寫到認證文字框,aliyun.com.key
的內容複寫到私密金鑰文字框,然後單擊建立。
ASM執行個體版本為1.17及以上
綁定網域名稱與認證。
登入ASM控制台,在左側導覽列,選擇 。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇 。
在入口網關頁面,單擊目標網關的名稱,然後在網關詳情頁面左側導覽列,單擊網域名稱/認證。
在網域名稱/認證頁面的網域名稱頁簽,單擊建立。
在建立網域名稱頁面,設定網域名稱為*.aliyun.com,協議為HTTPS,輸入連接埠名稱和連接埠,選擇認證,選中是否使用TLS保護串連,然後單擊建立。
說明選中是否使用TLS保護串連,表示只有TLS請求才能訪問到網域名稱。
執行以下命令,使用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成功,表明綁定網域名稱與認證成功。