本主题介绍如何在 Istio Ingress 上启用单向 TLS 和 mTLS。
配置单向 TLS
使用单向 TLS 来保护 Istio Ingress 上的 API 代理端点。如需启用单向 TLS,可使用 TLS 证书/密钥对或使用 Kubernetes Secret 配置 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 Secret
在 istio-system
命名空间中创建 Kubernetes Secret,并将 Secret 名称添加到替换文件中:
- 创建 Secret
kubectl create -n istio-system secret generic $SECRET_NAME \ --from-file=key=$KEY_FILE \ --from-file=cert=$CERT_FILE
- 配置替换文件中的
virtualhosts
属性:virtualhosts: - name: $ENVIRONMENT_GROUP_NAME tlsMode: SIMPLE # Note: SIMPLE is the default, so it is optional. sslSecret: $SECRET_NAME
配置 mTLS
您可以在 Istio Ingress 上配置 mTLS,而不是单向 TLS。配置 mTLS 的方法有两种,如下所述。
方法 1:密钥/证书对和 CA 文件
在替换文件的 virtualhosts
属性中,提供含有 SSL 证书和密钥文件的证书授权机构 (CA) 证书:
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 Secret
在istio-system
命名空间中创建两个 Kubernetes Secret。第一个 Secret 用于 SSL 证书/密钥对,第二个 Secret 用于 CA。然后,将它们添加到替换文件中。- 在
istio-system
命名空间中创建两个 Kubernetes Secret:kubectl create -n istio-system secret generic $SECRET_NAME \ --from-file=key=$KEY_FILE \ --from-file=cert=$CERT_FILE
- 为 CA 创建 Secret:
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