Puedes proteger la pasarela de entrada con HTTPS mediante TLS simple y habilitar las conexiones HTTPS a páginas web específicas. Además, puedes redirigir las conexiones HTTP a HTTPS.
HTTPS crea un canal seguro en una red no segura, lo que protege contra ataques man-in-the-middle y cifra el tráfico entre el cliente y el servidor. Para 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 de certificación de confianza para que un navegador web lo acepte sin mostrar ninguna advertencia.
Edita la pasarela llamada external-gateway en el espacio de nombres kf
con el editor de Kubernetes integrado:
kubectl edit gateway -n kf external-gateway
- Si 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 empiece por
istio
niprometheus
. En este ejemplo, el secreto se llamamyapp-https-credential
. - Menos de
servers:
- Añade una sección para el puerto 443.
- En
tls:
, asigna acredentialName
el nombre del secreto que acabas de crear. - En
hosts:
, añade el nombre de host del servicio que quieras proteger con HTTPS. Se puede definir en todo un dominio mediante un comodín (por ejemplo,*.example.com
) o limitarse a un solo nombre de host (por ejemplo,myapp.example.com
).
- Ya debería haber una sección en
servers:
para el puerto 80 HTTP. Mantenga esta sección en la definición de Gateway si quiere que todo el tráfico llegue como HTTP. - Para redirigir HTTP a HTTPS, añade el valor
httpsRedirect: true
entls
en la sección del servidor HTTP. Consulta la documentación de Istio Gateway. Ten en cuenta que, si añades este código en la sección dondehosts
está configurado como*
, significa que todo el tráfico se redirige a HTTPS. Si solo quiere redirigir el tráfico de HTTP a HTTPS en una aplicación o un dominio, añada una sección HTTP independiente en la que especifique la redirección.
A continuación, se muestra un ejemplo de una puerta de enlace spec
que configura HTTPS para myapp.example.com
y redirige 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