Puedes asegurar la puerta de enlace de entrada con HTTPS si utilizas un protocolo TLS simple y habilitas las conexiones HTTPS a páginas web específicas. Además, puedes redireccionar las conexiones HTTP a HTTPS.
HTTPS crea un canal seguro en una red insegura, protege contra ataques de intermediarios y encripta el tráfico entre el cliente y el servidor. A fin de preparar un servidor web para que acepte conexiones HTTPS, un administrador debe crear un certificado de clave pública para el servidor. Este certificado debe estar firmado por una autoridad certificada de confianza para que un navegador web lo acepte sin advertencia.
Edita la puerta de enlace llamada external-gateway en el espacio de nombres kf
con el editor de Kubernetes integrado:
kubectl edit gateway -n kf external-gateway
- Suponiendo que tienes un certificado y una clave para tu servicio, crea un secreto de Kubernetes para la puerta de enlace de entrada. Asegúrate de que el nombre del secreto no comience con
istio
niprometheus
. En este ejemplo, el secreto se llamamyapp-https-credential
. - En
servers:
- Agrega una sección para el puerto 443.
- En
tls:
, configuracredentialName
como el nombre del secreto que acabas de crear. - En
hosts:
, agrega el nombre de host del servicio que quieres proteger con HTTPS. Se puede establecer en un dominio completo mediante un comodín (p. ej.,*.example.com
) o con un solo nombre de host (p. ej.,myapp.example.com
).
- Ya debería haber una sección en
servers:
para el puerto 80 de HTTP. Mantén esta sección en la definición de la puerta de enlace si deseas que todo el tráfico ingrese como HTTP. - Para redireccionar HTTP a HTTPS, agrega el valor
httpsRedirect: true
entls
en la sección del servidor HTTP. Consulta la documentación de la puerta de enlace de Istio para obtener información de referencia. Ten en cuenta que agregar esto en la sección dondehosts
se configura como*
, implica que todo el tráfico se redirecciona a HTTPS. Si solo deseas redireccionar HTTP a HTTPS para una sola aplicación o un solo dominio, agrega una sección HTTP separada que especifique el redireccionamiento.
A continuación, se muestra un ejemplo de un spec
de puerta de enlace que configura HTTPS para myapp.example.com
y redirecciona HTTP a HTTPS para ese host:
spec:
selector:
istio: ingressgateway
servers:
- hosts:
- myapp.example.com
port:
name: https
number: 443
protocol: HTTPS
tls:
credentialName: myapp-https-credential
mode: SIMPLE
- hosts:
- myapp.example.com
port:
name: http-my-app
number: 80
protocol: HTTP
tls:
httpsRedirect: true
- hosts:
- '*'
port:
name: http
number: 80
protocol: HTTP