Configuración de la Versión Mínima de TLS del Workload de Istio
Esta tarea muestra cómo configurar la versión mínima de TLS para los workloads de Istio. La versión máxima de TLS para los workloads de Istio es 1.3.
Configuración de la versión mínima de TLS para los workloads de Istio
Instale Istio a través de
istioctlcon la versión mínima de TLS configurada. El recurso personalizadoIstioOperatorutilizado para configurar Istio en el comandoistioctl installcontiene un campo para la versión mínima de TLS para los workloads de Istio. El campominProtocolVersionespecifica la versión mínima de TLS para las conexiones TLS entre los workloads de Istio. En el siguiente ejemplo, la versión mínima de TLS para los workloads de Istio se configura en 1.3.$ cat <<EOF > ./istio.yaml apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: meshConfig: meshMTLS: minProtocolVersion: TLSV1_3 EOF $ istioctl install -f ./istio.yaml
Verificar la configuración TLS de los workloads de Istio
Después de configurar la versión mínima de TLS de los workloads de Istio, puede verificar que la versión mínima de TLS se configuró y funciona como se esperaba.
Despliegue dos workloads:
httpbinycurl. Despliegue estos en un solo namespace, por ejemplofoo. Ambos workloads se ejecutan con un proxy Envoy delante de cada uno.$ kubectl create ns foo $ kubectl apply -f <(istioctl kube-inject -f @samples/httpbin/httpbin.yaml@) -n foo $ kubectl apply -f <(istioctl kube-inject -f @samples/curl/curl.yaml@) -n fooVerifique que
curlse comunica correctamente conhttpbinutilizando este comando:$ kubectl exec "$(kubectl get pod -l app=curl -n foo -o jsonpath={.items..metadata.name})" -c curl -n foo -- curl http://httpbin.foo:8000/ip -sS -o /dev/null -w "%{\nhttp_code}" 200
En el ejemplo, la versión mínima de TLS se configuró en 1.3. Para verificar que TLS 1.3 está permitido, puede ejecutar el siguiente comando:
$ kubectl exec "$(kubectl get pod -l app=curl -n foo -o jsonpath={.items..metadata.name})" -c istio-proxy -n foo -- openssl s_client -alpn istio -tls1_3 -connect httpbin.foo:8000 | grep "TLSv1.3"La salida de texto debería incluir:
TLSv1.3Para verificar que TLS 1.2 no está permitido, puede ejecutar el siguiente comando:
$ kubectl exec "$(kubectl get pod -l app=curl -n foo -o jsonpath={.items..metadata.name})" -c istio-proxy -n foo -- openssl s_client -alpn istio -tls1_2 -connect httpbin.foo:8000 | grep "Cipher is (NONE)"La salida de texto debería incluir:
Cipher is (NONE)Limpieza
Elimine las applications de ejemplo curl y httpbin del namespace foo:
$ kubectl delete -f samples/httpbin/httpbin.yaml -n foo
$ kubectl delete -f samples/curl/curl.yaml -n fooDesinstale Istio del cluster:
$ istioctl uninstall --purge -yPara eliminar los namespaces foo e istio-system:
$ kubectl delete ns foo istio-system