本主題說明如何在 ingressgateway 上啟用單向 TLS 和 mTLS。
設定單向傳輸層安全標準 (TLS)
使用單向 TLS 保護入口閘道上的 API Proxy 端點。如要啟用單向 TLS,請使用 TLS 憑證/金鑰組或 Kubernetes 機密資料設定 ingress,如以下選項所述。
方法 1:金鑰/憑證組合
在覆寫檔案的 virtualhosts
屬性中提供 SSL 憑證和金鑰檔案:
virtualhosts:
- name: $ENVIRONMENT_GROUP_NAME
sslCertPath: "$CERT_FILE"
sslKeyPath: "$KEY_FILE"
其中 $ENVIRONMENT_GROUP_NAME 是環境群組的名稱,其中包含對應的主機別名,而 $CERT_FILE 和 $KEY_FILE 則是 TLS 金鑰和憑證檔案。請參閱「建立 TLS 憑證」一文。
選項 2:Kubernetes 密鑰
建立 Kubernetes 密鑰,並將其新增至覆寫檔案。
- 請在下列兩個命名空間中建立 Secret:
- 如果您使用的是 Apigee 入口閘道,請使用
apigee
命名空間。 - 如果您使用客戶安裝的 Anthos 服務網格,請使用
istio-system
命名空間。
Apigee 入口閘道
kubectl create -n apigee secret generic $SECRET_NAME \ --from-file=key=$KEY_FILE \ --from-file=cert=$CERT_FILE
Anthos 服務網格
kubectl create -n istio-system secret generic $SECRET_NAME \ --from-file=key=$KEY_FILE \ --from-file=cert=$CERT_FILE
- 如果您使用的是 Apigee 入口閘道,請使用
- 在覆寫檔案中設定
virtualhosts
屬性:virtualhosts: - name: $ENVIRONMENT_GROUP_NAME tlsMode: SIMPLE # Note: SIMPLE is the default, so it is optional. sslSecret: $SECRET_NAME
設定 mTLS
您可以在輸入閘道上設定 mTLS,而非單向 TLS。設定 mTLS 有兩種方式,如下所述。
方法 1:金鑰/憑證組合和 CA 檔案
在覆寫檔案的 virtualhosts
屬性中,提供憑證授權單位 (CA) 憑證,以及 SSL 憑證和金鑰檔案:
virtualhosts:
- name: $ENVIRONMENT_GROUP_NAME
tlsMode: MUTUAL
caCertPath: "$CA_FILE"
sslCertPath: "$CERT_FILE"
sslKeyPath: "$KEY_FILE"
其中 $ENVIRONMENT_GROUP_NAME 是環境群組的名稱,其中包含對應的主機別名,$CA_FILE 是授權憑證,$CERT_FILE 和 $KEY_FILE 則是 TLS 金鑰和憑證檔案。請參閱「建立 TLS 憑證」一文。
選項 2:Kubernetes 密鑰
建立兩個 Kubernetes 密鑰。第一個密鑰用於 SSL 憑證/金鑰組,第二個用於 CA。然後將這些值新增至覆寫檔案。
- 在下列兩個命名空間中的其中一個建立兩個 Kubernetes 密鑰:
- 如果您使用的是 Apigee 入口閘道,請使用
apigee
命名空間。 - 如果您使用客戶安裝的 Anthos 服務網格,請使用
istio-system
命名空間。
Apigee 入口閘道
kubectl create -n apigee secret generic $SECRET_NAME \ --from-file=key=$KEY_FILE \ --from-file=cert=$CERT_FILE
Anthos 服務網格
kubectl create -n istio-system secret generic $SECRET_NAME \ --from-file=key=$KEY_FILE \ --from-file=cert=$CERT_FILE
- 如果您使用的是 Apigee 入口閘道,請使用
- 為 CA 建立密鑰:
Apigee 入口閘道
kubectl create -n apigee secret generic $SECRET_NAME-cacert \ --from-file=cacert=$CA_FILE
Anthos 服務網格
kubectl create -n istio-system secret generic $SECRET_NAME-cacert \ --from-file=cacert=$CA_FILE
- 在覆寫檔案中設定
virtualhosts
屬性:virtualhosts: - name: $ENVIRONMENT_GROUP_NAME tlsMode: MUTUAL # Note: Be sure to specify MUTUAL sslSecret: $SECRET_NAME