Alibaba Cloud Service Mesh (ASM) permite agregar un certificado para un nombre de dominio desde la consola. Esto ayuda a proteger el acceso al nombre de dominio mediante protocolos como HTTPS y mejora la seguridad de la puerta de enlace del servicio. Este tema describe cómo agregar un certificado para un nombre de dominio.
Requisitos previos
Cuenta con deployed an application in the cluster associated with your ASM instance y la instancia es una Enterprise Edition o Ultimate Edition.
Se ha desplegado una puerta de enlace de entrada. Para obtener más información, consulte Create an ingress gateway.
Ha habilitado la inyección automática de proxy sidecar para el namespace. Para obtener más información, consulte Enable automatic sidecar injection.
Ha obtenido la dirección IP de la puerta de enlace de ASM. Para obtener más información, consulte Obtain the IP address of an ASM gateway.
Contexto
Este tema utiliza el servicio myexampleapp para el nombre de dominio aliyun.com como ejemplo para describir cómo agregar un certificado para el nombre de dominio aliyun.com. Una vez agregado correctamente el certificado, puede usar una puerta de enlace de ASM para acceder al servicio myexampleapp del nombre de dominio aliyun.com mediante el protocolo HTTPS.
Procedimiento
-
Cree el servicio de ejemplo myexampleapp.
-
Cree un archivo llamado myexample-nginx.conf que contenga el siguiente contenido.
Este servicio de ejemplo se basa en NGINX. Debe crear un archivo de configuración para el servidor NGINX. Para el servicio con el nombre de dominio aliyun.com, la siguiente configuración especifica que las solicitudes a la ruta raíz devuelven el mensaje
Welcome to aliyun.com!y el código de estado200.events { } http { log_format main '$remote_addr - $remote_user [$time_local] $status ' '"$request" $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; error_log /var/log/nginx/error.log; server { listen 80; location / { return 200 'Welcome to aliyun.com!'; add_header Content-Type text/plain; } } } -
Ejecute el siguiente comando para crear un ConfigMap para el servidor NGINX:
kubectl create configmap myexample-nginx-configmap --from-file=nginx.conf=./myexample-nginx.conf -
Cree un archivo llamado myexampleapp.yaml que contenga el siguiente contenido.
-
Ejecute el siguiente comando para crear el servicio interno para el nombre de dominio aliyun.com:
kubectl apply -f myexampleapp.yaml
-
-
Importe el servicio myexampleapp a la puerta de enlace de ASM.
Inicie sesión en la consola de ASM. En el panel de navegación izquierdo, seleccione .
En la página Mesh Management, haga clic en el nombre de la instancia de ASM. En el panel de navegación izquierdo, seleccione .
En la página Ingress Gateway, haga clic en el nombre de la puerta de enlace de destino.
En la página Gateway Details, haga clic en Upstream Service en el panel de navegación izquierdo.
En la página Upstream Service, haga clic en Import service.
En la página Import service, seleccione un elemento en Namespaces, seleccione el servicio myexampleapp, haga clic en el icono
y luego haga clic en Submit.
-
Cree un certificado y una clave privada.
-
Ejecute el siguiente comando en OpenSSL para crear un certificado raíz y una clave privada:
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -subj '/O=myexample Inc./CN=aliyun.com' -keyout aliyun.root.key -out aliyun.root.crt -
Ejecute los siguientes comandos para generar un certificado y una clave privada para el dominio aliyun.com.
-
Ejecute el siguiente comando para crear el certificado aliyun.com.crt:
openssl x509 -req -days 365 -CA aliyun.root.crt -CAkey aliyun.root.key -set_serial 0 -in aliyun.com.csr -out aliyun.com.crt -
Ejecute el siguiente comando para crear la clave privada aliyun.com.key.
openssl req -out aliyun.com.csr -newkey rsa:2048 -nodes -keyout aliyun.com.key -subj "/CN=aliyun.com/O=myexample organization"
-
-
-
Agregue el certificado y la clave privada a la puerta de enlace de ASM.
NotaA partir de la versión V1.17, las instancias de ASM admiten certificados desde la página Certificate Management. Se recomienda migrar sus certificados a Certificate Management. Puede crear un certificado con el mismo nombre en la página Certificate Management para sobrescribir automáticamente el certificado existente. No es necesario eliminar el certificado anterior. Para obtener más información sobre cómo actualizar una instancia, consulte Upgrade an ASM instance.
Un certificado en la página Certificate Management crea automáticamente un Secret con el mismo nombre en el plano de datos. Esta acción sobrescribe el contenido de cualquier Secret existente con el mismo nombre.
Instancias de ASM anteriores a la v1.17
Inicie sesión en la consola de ASM. En el panel de navegación izquierdo, seleccione .
En la página Mesh Management, haga clic en el nombre de la instancia de ASM. En el panel de navegación izquierdo, seleccione .
En la página Ingress Gateway, haga clic en el nombre de la puerta de enlace de destino. En la página Gateway Details, haga clic en Domain/Certificate en el panel de navegación izquierdo.
En la página Domain/Certificate, haga clic en la pestaña Certificate y luego haga clic en Create.
En la página New Certificate, introduzca un Name, pegue el contenido de
aliyun.com.crten el cuadro de texto Certificate y el contenido dealiyun.com.keyen el cuadro de texto key, y luego haga clic en Create.
ASM v1.17 y versiones posteriores
Inicie sesión en la consola de ASM. En el panel de navegación izquierdo, seleccione .
En la página Mesh Management, haga clic en el nombre de la instancia de destino. En el panel de navegación izquierdo, seleccione .
-
En la página Certificate Management, haga clic en Create. En el panel Certificate Information, configure los parámetros y haga clic en OK.
Parámetro
Descripción
Name
Introduzca un nombre para el certificado. En este ejemplo, use myexample-credential.
Public Key Certificate
El contenido del archivo
aliyun.com.crtde Step 3.Private Key
El contenido del archivo
aliyun.com.keyde Step 3.
-
Vincule el nombre de dominio al certificado.
Inicie sesión en la consola de ASM. En el panel de navegación izquierdo, seleccione .
En la página Mesh Management, haga clic en el nombre de la instancia de ASM. En el panel de navegación izquierdo, seleccione .
En la página Ingress Gateway, haga clic en el nombre de la puerta de enlace de destino. En la página Gateway Details, haga clic en Domain/Certificate en el panel de navegación izquierdo.
En la página Domain/Certificate, haga clic en la pestaña Domain y luego haga clic en Create.
-
En la página Add domain, establezca Domain Name en *.aliyun.com y Protocol en HTTPS. Introduzca un Port Name y un Port. Seleccione una credential y seleccione Secure connections with standard TLS semantics.. A continuación, haga clic en Create.
NotaSi selecciona Secure connections with standard TLS semantics., solo las solicitudes cifradas con TLS podrán acceder al nombre de dominio.
-
Ejecute el siguiente comando para acceder a aliyun.com mediante HTTPS y comprobar que el certificado está vinculado al nombre de dominio:
curl -k -H Host:www.aliyun.com --resolve www.aliyun.com:443:<IP address of the ASM gateway> https://www.aliyun.comSalida esperada:
Welcome to aliyun.com!Si accede correctamente a aliyun.com mediante el protocolo HTTPS, significa que el nombre de dominio y el certificado se han vinculado correctamente.