Compatibilidad con Azure Key Vault
El dispositivo NetScaler se integra con HSM externos (SafeNet y Thales) para implementaciones locales. Para implementaciones en la nube, el dispositivo ADC se integra con Azure Key Vault. El dispositivo almacena sus claves privadas en Key Vault para facilitar la administración y la seguridad de la clave privada en el dominio de la nube pública. Ya no tiene que almacenar y administrar claves en diferentes ubicaciones para los dispositivos ADC implementados en varios centros de datos y proveedores de nube.
El uso de ADC con el nivel de precios de Azure Key Vault Premium, que proporcionó claves admitidas por HSM, proporciona cumplimiento FIPS 140-2 de nivel 2.
Azure Key Vault es una oferta estándar de Microsoft. Para obtener más información sobre Azure Key Vault, consulte la documentación de Microsoft Azure.
Nota:
La integración de NetScaler con Azure Key Vault se admite con el protocolo TLS 1.3.
Descripción de la arquitectura
Azure Key Vault es un servicio para almacenar secretos de forma segura en la nube de Azure. Al guardar las llaves en Azure Key Vault, reduce las posibilidades de que se roben las llaves. Una vez que la bóveda de llaves esté configurada, podrás guardar las llaves en ella. Configure los servidores virtuales en el dispositivo ADC para realizar operaciones de clave privada en Key Vault. El dispositivo ADC accede a la clave de cada apretón de manos SSL.
El siguiente diagrama ilustra el proceso para obtener un token de acceso de Azure Active Directory después de la autenticación. Este token se usa con llamadas a la API REST para operaciones de cifrado mediante claves privadas.
El siguiente diagrama muestra un apretón de manos típico de RSA. El mensaje de intercambio de claves de cliente (CKE) que se cifra con la clave pública se descifra mediante la clave privada almacenada en Key Vault.
En un apretón de manos ECDHE, el mensaje de intercambio de claves de servidor (SKE) enviado por el dispositivo NetScaler se firma con la clave privada almacenada en Key Vault.
Requisitos previos
-
Debe tener una suscripción a Azure.
-
(Opcional) Instale la CLI de Azure en una máquina Linux. Para obtener instrucciones, consulte la documentación de Azure https://docs.microsoft.com/en-us/cli/azure/install-azure-cli-apt?view=azure-cli-latest.
-
Complete la configuración en el portal de Azure antes de configurar las entidades en el dispositivo ADC.
Configurar la integración de ADC Azure Key Vault
Primero realice la configuración en el portal de Azure, seguida de la configuración en el dispositivo ADC.
Realice los siguientes pasos en el portal de Azure
El siguiente diagrama de flujo muestra el flujo de alto nivel para la configuración requerida en el portal de Azure.
- Cree una entidad de aplicación y servicio en Azure Active Directory.
- Cree Key Vault en un grupo de recursos.
- Configure la entidad principal de la aplicación y el servicio para que realice operaciones de firma y descifrado en Key Vault.
-
Cree llaves en el depósito de llaves de una de las siguientes maneras:
- Al importar un archivo de clave.
- Generando un certificado.
Para obtener información sobre los comandos para configurar los pasos anteriores, consulte la documentación de Azure en https://docs.microsoft.com/en-us/azure/active-directory/develop/app-objects-and-service-principals.
Realice los siguientes pasos en el dispositivo ADC
El siguiente diagrama de flujo muestra el flujo de alto nivel para la configuración requerida en el dispositivo ADC.
- Configure un servidor DNS.
- Configure los certificados raíz para verificar los certificados presentados por Azure.
- Cree una aplicación de Azure.
- Cree una entidad de Azure Key Vault.
- Cree una clave HSM.
- Cree un par de claves de certificado.
- Enlace el par de claves de certificado a un servidor virtual.
Configurar un servidor DNS
Se requiere un servidor DNS para la resolución de nombres del host de Key Vault y el punto de conexión de Azure Active Directory.
Para configurar un servidor DNS mediante la CLI
En la línea de comandos, escriba:
add dns nameserver <IP address>
<!--NeedCopy-->
Ejemplo:
add dns nameserver 192.0.2.150
<!--NeedCopy-->
Para configurar un servidor DNS mediante la interfaz gráfica de usuario
-
Vaya a Administración del tráfico > DNS > Servidores de nombres . Haga clic en Agregar.
- Introduzca valores para los siguientes parámetros:
- Dirección IP: dirección IP de un servidor de nombres externo o, si se establece el parámetro Local, dirección IP de un servidor DNS local (LDNS).
- Protocolo: protocolo utilizado por el servidor de nombres. UDP_TCP no es válido si el servidor de nombres es un servidor virtual DNS configurado en el dispositivo.
- Haga clic en Crear.
Agregar y vincular un certificado raíz
Descargue los certificados raíz del certificado presentado por Azure Key Vault https://<vault_name>.vault.azure.net
y Azure Active Directory (AAD) https://login.microsoftonline.com y cárguelo en el dispositivo ADC. Estos certificados son necesarios para validar el certificado presentado por Azure Key Vault y AAD. Enlace uno o más certificados al grupo de certificados de CA ns_callout_certs
.
Para agregar un certificado raíz mediante la CLI
En la línea de comandos, escriba:
add ssl certkey <certkeyname> -cert <certname>
bind ssl caCertGroup <caCertGroupName> <certkeyName>
<!--NeedCopy-->
Ejemplo: En el siguiente ejemplo, el certificado raíz presentado por Azure Key Vault y AAD es el mismo.
add ssl certKey rootcert -cert RootCyberTrustRoot.crt
bind ssl cacertGroup ns_callout_certs rootcert
<!--NeedCopy-->
Para agregar un certificado raíz mediante la GUI
-
Vaya a Administración del tráfico > SSL > Certificados > Certificados de CA .
- Introduzca valores para los siguientes parámetros:
- Nombre del par de claves de certificado
- Nombre del archivo de certificado
-
Haga clic en Instalar.
-
Vaya a Administración del tráfico > SSL > Grupo de certificados de CA.
-
Seleccione ns_callout_certs y haga clic en Mostrar enlaces.
-
Haga clic en Bind.
-
Seleccione el certificado de CA creado anteriormente y haga clic en Seleccionar.
- Haga clic en Vinculary, a continuación, en Cerrar.
Configurar una aplicación de Azure
La entidad de aplicación de Azure contiene las credenciales necesarias para autenticarse en Azure Active Directory y obtener el token de acceso. Es decir, para obtener acceso de autorización a los recursos y API de Key Vault, agregue el ID de aplicación de Azure, el secreto (contraseña) y el ID de arrendatario en el dispositivo ADC.
Al configurar la entidad de aplicación de Azure mediante la CLI, debe introducir la contraseña. Si usa la GUI, la entidad de aplicación de Azure contiene las credenciales necesarias para autenticarse en Azure Active Directory y obtener el token de acceso.
Para configurar una aplicación de Azure mediante la CLI
Utilice el parámetro VaultResource en el comando add azure application
para obtener el dominio del grupo de recursos antes de que se conceda el token de acceso a la aplicación. Este parámetro se agrega porque el nombre de dominio puede ser diferente para diferentes regiones. Por ejemplo, el dominio puede ser vault.azure.net
o vault.usgov.net
.
En la línea de comandos, escriba:
add azure application <name> -clientID <string> -clientSecret -tenantID <string> -vaultResource <string> [-tokenEndpoint <URL>]
show azure application
<!--NeedCopy-->
Ejemplo:
add azure application app10 -clientiD 12345t23aaa5 -clientsecret csHzOoEzmuY= -vaultResource example.vault.azure.net -tenantID 33583ee9ca5b
Done
> sh azure application app10
1) Name: app10 ClientID: 12345t23aaa5
TokenEndpoint: "https://login.microsoftonline.com/33583ee9ca5b/"
TenantID: 33583ee9ca5b VaultResource: example.vault.azure.net
Done
<!--NeedCopy-->
Para configurar una aplicación de Azure mediante la GUI
-
Vaya a Administración del tráfico > SSL > Azure > Aplicación.
-
En el panel de detalles, haga clic en Agregar.
-
Introduzca valores para los siguientes parámetros:
- Nombre: nombre del objeto de aplicación del dispositivo NetScaler.
- ID de cliente: ID de aplicación que se genera cuando se crea una aplicación en Azure Active Directory mediante la CLI de Azure o el portal de Azure (GUI).
- Secreto del cliente: contraseña para la aplicación configurada en Azure Active Directory. La contraseña se especifica en la CLI de Azure o se genera en el portal de Azure (GUI).
- ID de arrendatario: ID del directorio dentro de Azure Active Directory en el que se creó la aplicación.
- Vault Resource: recurso de la bóveda para el que se concede el token de acceso. Ejemplo
vault.azure.net
. - Punto final del token: URL desde la que se puede obtener el token de acceso. Si no se especifica el punto final del token, el valor predeterminado es
https://login.microsoftonline.com/<tenant id>
.
Configurar Azure Key Vault
Cree un objeto de Azure Key Vault en el dispositivo ADC.
Para configurar Azure Key Vault mediante la CLI
En la línea de comandos, escriba:
add azure keyVault <name> -azureVaultName <string> -azureApplication
<string>
show azure keyvault
<!--NeedCopy-->
Ejemplo:
add azure keyvault kv1 -azureapplication app10 -azurevaultName pctest.vault.azure.net
> sh azure keyVault
1) Name: kv1 AzureVaultName: pctest.vault.azure.net
AzureApplication: app10 State: "Access token obtained"
Done
<!--NeedCopy-->
En la siguiente tabla se enumeran los diferentes valores que el estado de Azure Key Vault puede tomar junto con una breve descripción de cada estado.
State | Descripción |
---|---|
Created |
Estado inicial del objeto Key Vault. No se ha intentado la autenticación. |
Could not reach token end point |
Indica uno de los siguientes: servidor DNS no configurado, certificado del emisor no enlazado a un grupo de certificados de CA o problemas de red. |
Authorization failed |
Credenciales de aplicación incorrectas. |
Token parse error |
La respuesta de Azure Active Directory no tiene el formato esperado. |
Access token obtained |
Azure Active Directory se autenticó correctamente. |
Para configurar Azure Key Vault mediante la interfaz gráfica de usuario
-
Vaya a Administración del tráfico > SSL > Azure > Key Vault.
-
Introduzca valores para los siguientes parámetros:
- Nombre: Nombre de la bóveda de llaves.
- Nombre de Azure Key Vault: Nombre del depósito de claves configurado en la nube de Azure mediante la CLI de Azure o el portal de Azure (GUI) con nombre de dominio.
- Nombre de la aplicación de Azure: nombre del objeto de aplicación de Azure creado en el dispositivo ADC. El objeto Application de Azure con este nombre se usa para la autenticación con Azure Active Directory.
Agregar clave HSM
Almacenar su clave privada en el HSM proporciona cumplimiento FIPS 140-2 nivel 2.
Para agregar una clave HSM mediante la CLI
En la línea de comandos, escriba:
add ssl hsmKey <hsmKeyName> [-hsmType <hsmType>] [-key <string> |
-serialNum <string>] {-password } [-keystore <string>]
<!--NeedCopy-->
Ejemplo:
add ssl hsmKey h1 -keystore kv1 -key san15key -hsmType KEYVAULT
> sh ssl hsmKey h1
HSM Key Name: h1 Type: KEYVAULT
Key: san15key
Key store: kv1
State: “Created”
Done
<!--NeedCopy-->
En la siguiente tabla se enumeran los diferentes valores que puede adoptar el estado de una clave HSM junto con una breve descripción de cada estado.
State | Descripción |
---|---|
Created | La clave HSM se agrega en el dispositivo ADC. Aún no se ha intentado realizar una operación clave. |
Token de acceso no disponible | El token de acceso no está disponible cuando se intentó la operación de clave. |
No autorizado | La aplicación Azure configurada no tiene permiso para realizar la operación clave. |
No existe | La clave no existe en Azure Key Vault. |
Inalcanzable | No se puede acceder al host de Key Vault en la red. |
Marcado hacia abajo | La tecla HSM está marcada como ABAJO en el dispositivo ADC debido a errores de umbral durante la operación de la tecla. |
Operaciones clave correctas | Se recibió una respuesta de éxito de Key Vault para la operación clave. |
Las operaciones clave fallaron | Se recibió una respuesta de error de Key Vault para la operación clave. |
Operación clave estrangulada | La solicitud de operación clave se ve regulada por Key Vault. |
Para agregar una clave HSM mediante la interfaz gráfica de usuario
-
Vaya a Administración del tráfico > SSL > HSM.
-
Introduzca valores para los siguientes parámetros.
- Nombre de clave HSM: nombre de la clave.
- Tipo de HSM: tipo de HSM.
- Almacén de claves: nombre del objeto de almacenamiento de claves que representa el HSM donde se almacena la clave. Por ejemplo, nombre del objeto Key Vault o del objeto de autenticación de Azure Key Vault. Se aplica solo al tipo
KEYVAULT
de HSM.
-
Haga clic en Agregar.
Agregar un par de claves de certificado
Agregue un par de claves de certificado con la clave HSM creada anteriormente.
Para agregar un par de claves de certificado mediante la CLI
En la línea de comandos, escriba:
add ssl certKey <certkeyName> (-cert <string> [-password]) -hsmKey <string>]
show ssl certkey
<!--NeedCopy-->
Ejemplo:
add ssl certKey serverrsa_2048 -cert /nsconfig/ssl/san_certs/san15.pem -hsmKey h1
> sh ssl certkey serverrsa_2048
Name: serverrsa_2048 Status: Valid, Days to expiration:9483
Version: 3
Serial Number: F5CFF9EF1E246022
Signature Algorithm: sha256WithRSAEncryption
Issuer: C=in,O=citrix,CN=ca
Validity
Not Before: Mar 20 05:42:57 2015 GMT
Not After : Mar 12 05:42:57 2045 GMT
Certificate Type: "Server Certificate"
Subject: C=in,O=citrix
Public Key Algorithm: rsaEncryption
Public Key size: 2048
Ocsp Response Status: NONE
Done
<!--NeedCopy-->
Para agregar un par de claves de certificado mediante la interfaz gráfica de usuario
-
Vaya a Administración del tráfico > SSL > Instalar certificado (HSM).
-
Introduzca valores para los siguientes parámetros:
- Nombre del par de claves de certificado
- Nombre del archivo de certificado
- Clave HSM
-
Haga clic en Instalar.
Enlace el par de claves de certificado a un servidor virtual
El certificado utilizado para procesar transacciones SSL debe estar vinculado al servidor virtual que recibe los datos SSL.
Para enlazar el par de claves de certificado SSL a un servidor virtual mediante la CLI
En la línea de comandos, escriba:
bind ssl vserver <vServerName> -certkeyName <certificate-KeyPairName>
show ssl vserver <vServerName>
<!--NeedCopy-->
Ejemplo:
bind ssl vserver v1 -certkeyName serverrsa_2048
sh ssl vserver v1
Advanced SSL configuration for VServer v1:
DH: DISABLED
DH Private-Key Exponent Size Limit: DISABLED Ephemeral RSA: ENABLED Refresh Count: 0
Session Reuse: ENABLED Timeout: 120 seconds
Cipher Redirect: DISABLED
ClearText Port: 0
Client Auth: DISABLED
SSL Redirect: DISABLED
Non FIPS Ciphers: DISABLED
SNI: DISABLED
OCSP Stapling: DISABLED
HSTS: DISABLED
HSTS IncludeSubDomains: NO
HSTS Max-Age: 0
HSTS Preload: NO
SSLv3: ENABLED TLSv1.0: ENABLED TLSv1.1: ENABLED TLSv1.2: ENABLED TLSv1.3: DISABLED
Push Encryption Trigger: Always
Send Close-Notify: YES
Strict Sig-Digest Check: DISABLED
Zero RTT Early Data: DISABLED
DHE Key Exchange With PSK: NO
Tickets Per Authentication Context: 1
ECC Curve: P_256, P_384, P_224, P_521
1) CertKey Name: serverrsa_2048 Server Certificate
1) Cipher Name: DEFAULT
Description: Default cipher list with encryption strength >= 128bit
Done
<!--NeedCopy-->
Para enlazar un par de claves de certificado SSL a un servidor virtual mediante la GUI
-
Vaya a Administración del tráfico > Equilibrio de carga > Servidores virtuales y abra un servidor virtual SSL. Haga clic en la sección Certificado.
-
Haga clic en la flecha para seleccionar el par de claves de certificado.
-
Seleccione el par de claves de certificado de la lista.
-
Enlace el par de claves de certificado al servidor virtual.
Limitaciones
- El número de llamadas simultáneas a Azure Key Vault para operaciones clave es limitado. El rendimiento del dispositivo ADC depende de los límites de Key Vault. Para obtener más información, consulte la documentación de Microsoft Azure Key Vault.
- Las claves EC no son compatibles.
- No se admiten los protocolos EDT y DTLS.
- Los dispositivos ADC con chips SSL Intel Coleto no son compatibles.
- Las particiones de administración y clústeres no son compatibles.
- No puede actualizar la entidad de aplicación de Azure, el objeto Azure Key Vault y el par de claves de certificado HSM después de haberlos agregado al dispositivo ADC.
- No se admite un paquete de certificados con claves HSM.
- No aparece un error si la clave HSM y el certificado no coinciden. Al agregar un par de claves de certificado, asegúrese de que la clave HSM y el certificado coincidan.
- No se puede vincular una clave HSM a un servidor virtual DTLS.
- No puede firmar solicitudes de OCSP mediante un par de claves de certificado que se cree con una clave HSM.
- No puede vincular un par de claves de certificado a un servicio SSL si el par de claves de certificado se crea con una clave HSM.
Preguntas frecuentes
Cuando se integra con Azure Key Vault, ¿las claves privadas se almacenan en la memoria del dispositivo ADC?
No, las claves privadas no se almacenan en la memoria del dispositivo ADC. Para cada transacción SSL, el dispositivo envía una solicitud a Key Vault.
¿La integración cumple con FIPS 140-2 nivel 2?
Sí, la solución integrada permite usar FIPS 140-2 de nivel 2.
¿Qué tipos de clave se admiten?
Solo se admiten los tipos de clave RSA.
¿Qué tamaños de clave se admiten?
Se admiten claves RSA de 1024 bits, 2048 bits y 4096 bits.
¿Qué cifrados se admiten?
Se admiten todos los cifrados compatibles con el dispositivo ADC, incluidos los cifrados TLSv1.3 con ECDHE y SHA256.
¿Se registran las transacciones?
El dispositivo ADC registra cada transacción que realiza con Key Vault. Se registran detalles como la hora, la dirección IP de la bóveda, el puerto, el éxito o el fallo de la conexión y los errores. A continuación se muestra una salida de registro SSL de ejemplo.
Apr 9 16:35:30 <local0.debug> 10.102.57.30 04/09/2019:16:35:30 GMT 0-PPE-0 : default SSLLOG SSL_HANDSHAKE_SUCCESS 896 0 : Backend SPCBId 30894 - ServerIP 104.211.224.186 - ServerPort 443 - ProtocolVersion TLSv1.2 - CipherSuite "ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Non-Export 256-bit" - Session New - SERVER_AUTHENTICATED -SerialNumber "200005A75B04365827852D630000000005A75B" - SignatureAlgorithm "sha256WithRSAEncryption" - ValidFrom "Mar 17 03:28:42 2019 GMT" - ValidTo "Mar 17 03:28:42 2021 GMT" - HandshakeTime 40 ms Apr 9 16:35:30 <local0.debug> 10.102.57.30 04/09/2019:16:35:30 GMT 0-PPE-0 : default SSLLOG SSL_HANDSHAKE_ISSUERNAME 897 0 : SPCBId 30894 - IssuerName " C=US,ST=Washington,L=Redmond,O=Microsoft Corporation,OU=Microsoft IT,CN=Microsoft IT TLS CA 2" Apr 9 16:35:30 <local0.debug> 10.102.57.30 04/09/2019:16:35:30 GMT 0-PPE-0 : default SSLLOG SSL_HANDSHAKE_SUBJECTNAME 898 0 : SPCBId 30894 - SubjectName " CN=vault.azure.net" <!--NeedCopy-->