Configurar la integración de ADC-Thales

El siguiente diagrama de flujo muestra las tareas que debe realizar para usar Thales HSM con un Citrix ADC:

Diagrama de flujo

Como se muestra en el diagrama de flujo anterior, realice las siguientes tareas:

  1. Habilite la inserción de configuración remota en el HSM.
  2. Configure el ADC para utilizar el HSM de Thales.
    • Agregue la dirección NSIP en el HSM.
    • Configure el permiso de acceso para el ADC en el RFS.
    • Configure el inicio automático del servidor duro en el momento del arranque.
    • Inscriba el HSM en el ADC.
    • Agregue detalles de RFS en el ADC.
    • Sincronice el ADC con el RFS.
    • Verifique que Thales HSM esté inscrito correctamente en el ADC.
  3. (Opcional) Cree una clave HSM RSA.
  4. Configure las entidades en Citrix ADC.
    • Agregue la clave HSM.
    • Agregue un par de claves de certificado mediante la clave HSM.
    • Agregue un servidor virtual.
    • Agregue un objeto de servidor.
    • Agregar un servicio.
    • Enlazar el servicio al servidor virtual.
    • Enlazar el par de claves de certificado al servidor virtual.
    • Verifique la configuración.

Configurar el HSM de Thales

Debe especificar la dirección IP del RFS en el HSM de Thales para que acepte la configuración que el RFS le envía. Utilice el panel frontal nShield Connect del Thales HSM para realizar el siguiente procedimiento.

Especifique la dirección IP de un equipo remoto en el HSM de Thales

  1. Vaya a Configuración del sistema > Opciones del archivo de configuración > Permitir inserción automática.
  2. Seleccione ON y especifique la dirección IP del equipo (RFS) desde la que desea aceptar la configuración.

Habilitar la inserción de configuración remota en el HSM

Debe especificar la dirección IP del RFS en el HSM de Thales para que acepte la configuración que el RFS le envía. Utilice el panel frontal nShield Connect del Thales HSM para realizar el siguiente procedimiento.

Especifique la dirección IP de un equipo remoto en el HSM de Thales

  1. Vaya a Configuración del sistema > Opciones del archivo de configuración > Permitir inserción automática.
  2. Seleccione ON y especifique la dirección IP del equipo (RFS) desde la que desea aceptar la configuración.

Configurar el ADC para utilizar el HSM de Thales

Valores de ejemplo utilizados en esta documentación:

Dirección NSIP = 10.217.2.43

Thales HSM dirección IP = 10.217.2.112

Dirección IP RFS=10.217.2.6

Agregue la dirección NSIP en el HSM

Normalmente se utiliza el panel frontal de NShield Connect para agregar clientes al HSM. Para obtener más información, consulte la Guía de inicio rápido de nShield Connect.

Alternativamente, utilice el RFS para agregar el ADC como cliente al HSM. Para ello, debe agregar la dirección NSIP en la configuración de HSM en el RFS y, a continuación, insertar la configuración en el HSM. Antes de poder hacer esto, debe conocer el número de serie electrónico (ESN) del HSM.

Para obtener el ESN de su HSM, ejecute el siguiente comando en el RFS:

root@ns# /opt/nfast/bin/anonkneti <Thales HSM IP address>

Ejemplo:

root@ns# /opt/nfast/bin/anonkneti 10.217.2.112
BD17-C807-58D9 5e30a698f7bab3b2068ca90a9488dc4e6c78d822

El número ESN es BD17-C807-58D9.

Después de tener el número ESN, utilice un editor, como vi, para modificar el archivo de configuración HSM en el RFS.

vi /opt/nfast/kmdata/hsm-BD17-C807-58D9/config/config

En la sección hs_clients, agregue las siguientes entradas:

# Amount of data in bytes to encrypt with a session key before session key# renegotiation, or 0 for unlimitied. (default=1024\*1024\*8b=8Mb).
#  datalimit=INT
addr=10.217.2.43
clientperm=unpriv
keyhash=0000000000000000000000000000000000000000
esn=
timelimit=86400
datalimit=8388608
-----

Nota: Incluya uno o más guiones como delimitadores para agregar varias entradas en la misma sección.

Para insertar la configuración en el HSM, ejecute el siguiente comando en el RFS:

/opt/nfast/bin/cfg-pushnethsm --address=<Thales HSM IP address> --force /opt/nfast/kmdata/hsm-BD17-C807-58D9/config/config

Ejemplo:

/opt/nfast/bin/cfg-pushnethsm --address=10.217.2.112 --force
                /opt/nfast/kmdata/hsm-BD17-C807-58D9/config/config

Configurar el permiso de acceso para el ADC en el RFS

Para configurar el permiso de acceso para el ADC en el RFS, ejecute el siguiente comando en el RFS:

/opt/nfast/bin/rfs-setup --force -g --write-noauth <NetScaler IP address>

Ejemplo:

[root@localhost bin]# /opt/nfast/bin/rfs-setup --force -g --write-noauth 10.217.2.43
Adding read-only remote_file_system entries
Ensuring the directory /opt/nfast/kmdata/local exists
Adding new writable remote_file_system entries
Ensuring the directory /opt/nfast/kmdata/local/sync-store exists
Saving the new config file and configuring the hardserver
Done

Compruebe que el ADC puede alcanzar tanto el RFS como el HSM Thales mediante el puerto 9004.

Configurar el inicio automático del servidor de hardware en el momento del arranque

Cree un archivo y, a continuación, reinicie el dispositivo. Ahora, cada vez que reinicie el dispositivo y, si se encuentra este archivo, el servidor duro se inicia automáticamente.

En el símbolo del shell, escriba:

touch /var/opt/nfast/bin/thales_hsm_is_enrolled

En el símbolo del sistema, escriba:

reboot

Inscribir el HSM en el ADC

Cambie el directorio a /var/opt/nfast/bin.

Para agregar detalles de HSM a la configuración de ADC, ejecute el siguiente comando en el ADC:

nethsmenroll --force <Thales_nShield_Connect_ip_address> $(anonkneti <Thales_nShield_Connect_ip_address>)

Ejemplo:

root@ns# ./nethsmenroll --force 10.217.2.112 $(anonkneti 10.217.2.112)
OK configuring hardserver's nethsm imports

Este paso agrega las siguientes entradas después de la línea # ntoken_esn=esn en la sección nethsm_imports del archivo /var/opt/nfast/kmdata/config/config.

…
local_module=0
remote_ip=10.217.2.112
remote_port=9004
remote_esn=BD17-C807-58D9
keyhash=5e30a698f7bab3b2068ca90a9488dc4e6c78d822
timelimit=86400
datalimit=8388608
privileged=0
privileged_use_high_port=0
ntoken_esn=

Cambie el directorio a /var/opt/nfast/bin y ejecute el siguiente comando en el ADC:

touch "thales_hsm_is_enrolled"

Nota: Para quitar un HSM inscrito en el ADC, escriba:

./nethsmenroll –-remove <NETHSM-IP>

Agregar detalles de RFS en el ADC

Para agregar detalles de RFS, cambie el directorio a /var/opt/nfast/bin/ y, a continuación, ejecute el siguiente comando:

./rfs-sync --no-authenticate --setup <rfs_ip_address>

Ejemplo:

./rfs-sync --no-authenticate --setup 10.217.2.6
No current RFS synchronization configuration.
Configuration successfully written; new config details:
Using RFS at 10.217.2.6:9004: not authenticating.

Este paso agrega las siguientes entradas después de la línea # local_esn=esn en la sección rfs_sync_client del archivo /var/opt/nfast/kmdata/config/config.

……
remote_ip=10.217.2.6
remote_port=9004
use_kneti=no
local_esn=

Nota: Para quitar un RFS inscrito en el ADC, escriba:

./rfs_sync –remove

Sincronizar el ADC con el RFS

Para sincronizar todos los archivos, cambie el directorio a /var/opt/nfast/bin y, a continuación, ejecute el siguiente comando en el ADC:

./rfs-sync –-update

Este comando recupera todos los archivos World, los archivos de módulo y los archivos de clave del directorio /opt/nfast/kmdata/local del RFS y los coloca en el directorio /var/opt/nfast/kmdata/local del ADC. Citrix recomienda copiar manualmente los archivos World, los archivos Module_xxxx_xxxx_xxxx, donde XXXX_XXXXXX es el ESN del HSM inscrito y solo los archivos de clave RSA y certificado necesarios.

Verifique que el HSM de Thales esté correctamente inscrito en el ADC

Después de sincronizar el ADC con el RFS, haga lo siguiente:

  • Compruebe que el servidor duro local esté UP y en ejecución. (servidor NCipher en ejecución).
  • Obtenga el estado de los HSM configurados y verifique que los valores para el campo n_modules (número de módulos) y los campos de información km sean distintos de cero.
  • Compruebe que el HSM está inscrito correctamente y que el ADC puede utilizar (estado 0x2 User).
  • Las pruebas de carga mediante sigtest se ejecutan correctamente.

Cambie el directorio a /var/opt/nfast/bin y, en el símbolo del shell, ejecute los siguientes comandos:

root@ns# ./chkserv root@ns# ./nfkminfo root@ns# ./sigtest

Consulte Apéndice para ver un ejemplo.

Crear una clave RSA HSM

Solo se admiten claves RSA como claves HSM.

Nota: Omita este paso si las claves ya están presentes en la carpeta /opt/nfast/kmdata/local del RFS.

Cree una clave RSA, un certificado autofirmado y una solicitud de firma de certificados (CSR). Enviar la CSR a una entidad emisora de certificados para obtener un certificado de servidor.

En el siguiente ejemplo se crean los siguientes archivos:

  • Insertar clave RSA: Key_embed_2ed5428aae1e159bdbd63f25292c7113ec2c78
  • Certificado autofirmado: Example_selfcert
  • Solicitud de firma de certificado: Example_req

Nota: El comando generatekey es compatible con FIPS 140-2 Level 3 Security World estricto. Se necesita un conjunto de tarjetas de administrador (ACS) o un conjunto de tarjetas de operador (OCS) para controlar muchas operaciones, incluida la creación de claves y OCSs. Cuando ejecute el comando generatekey, se le pedirá que inserte una tarjeta ACS u OCS. Para obtener más información acerca del estricto mundo de seguridad FIPS 140-2 Level 3, consulte la Guía del usuario de nShield Connect.

En el ejemplo siguiente se utiliza Nivel 2 Security World. En el ejemplo, los comandos están en negrita.

Ejemplo:

[root@localhost bin]# ./generatekey embed
size: Key size? (bits, minimum 1024) [1024] > 2048
OPTIONAL: pubexp: Public exponent for RSA key (hex)? []
>
embedsavefile: Filename to write key to? []
> example
plainname: Key name? [] > example
x509country: Country code? [] > US
x509province: State or province? [] > CA
x509locality: City or locality? [] > Santa Clara
x509org: Organisation? [] > Citrix
x509orgunit: Organisation unit? [] > NS
x509dnscommon: Domain name? [] > www.citrix.com
x509email: Email address? [] > example@citrix.com
nvram: Blob in NVRAM (needs ACS)? (yes/no) [no] >
digest: Digest to sign cert req with? (md5, sha1, sha256, sha384, sha512)
  [default sha1] > sha512
key generation parameters:
 operation      Operation to perform               generate
 application    Application                        embed
 verify         Verify security of key             yes
 type           Key type                           RSA
 size           Key size                           2048
 pubexp         Public exponent for RSA key (hex)
 embedsavefile  Filename to write key to           example
 plainname      Key name                           example
 x509country    Country code                       US
 x509province   State or province                  CA
 x509locality   City or locality                   Santa Clara
 x509org        Organisation                       Citrix
 x509orgunit    Organisation unit                  NS
 x509dnscommon  Domain name                        www.citrix.com
 x509email      Email address                      example@citrix.com
 nvram          Blob in NVRAM (needs ACS)          no
 digest         Digest to sign cert req with       sha512
Key successfully generated.
Path to key: /opt/nfast/kmdata/local/key_embed_2ed5428aaeae1e159bdbd63f25292c7113ec2c78
You have new mail in /var/spool/mail/root

Resultado:

Ha creado un CSR (example_req), un certificado autofirmado (example_selfcert) y un archivo de token de clave de aplicación en formato embed (/opt/nfast/kmdata/local/key_embed_2ed5428aae1e159bdbd63f25292c7113ec2c78)

Dado que el ADC solo admite claves en formato simple, debe convertir la clave incrustada en una clave simple.

Para convertir la clave embed en una clave simple, ejecute el siguiente comando en el RFS:

[root@localhost bin]# ./generatekey -r simple
from-application: Source application? (embed, simple) [embed] > embed
from-ident: Source key identifier? (c6410ca00af7e394157518cb53b2db46ff18ce29,
                                    2ed5428aaeae1e159bdbd63f25292c7113ec2c78)
  [default c6410ca00af7e394157518cb53b2db46ff18ce29]
> 2ed5428aaeae1e159bdbd63f25292c7113ec2c78
ident: Key identifier? [] > examplersa2048key
plainname: Key name? [] > examplersa2048key
key generation parameters:
 operation         Operation to perform    retarget
 application       Application             simple
 verify            Verify security of key  yes
 from-application  Source application      embed
 from-ident        Source key identifier   2ed5428aaeae1e159bdbd63f25292c7113ec2c78
 ident             Key identifier          examplersa2048key
 plainname         Key name                examplersa2048key
Key successfully retargetted.
Path to key: /opt/nfast/kmdata/local/key_simple_examplersa2048key

Importante:

Cuando se le solicite el identificador de clave de origen, escriba 2ed5428aae1e159bdbd63f25292c7113ec2c78 como clave embed.

Resultado:

Se crea una clave con el prefijo key_simple (por ejemplo key_simple_examplersa2048key).

Nota: examplersa2048key es el identificador de clave (ident) y se conoce como el nombre de clave HSM en el ADC. Un identificador de clave es único. Todos los archivos simples tienen el prefijo key_simple.

Configurar las entidades en el ADC

Antes de que ADC pueda procesar el tráfico, debe hacer lo siguiente:

  1. Habilitar funciones.
  2. Agregue una dirección IP de subred (SNIP).
  3. Agregue la clave HSM al ADC.
  4. Agregue un par de claves de certificado mediante la clave HSM.
  5. Agregue un servidor virtual.
  6. Agregue un objeto de servidor.
  7. Agregar un servicio.
  8. Enlazar el servicio al servidor virtual.
  9. Enlazar el par de claves de certificado al servidor virtual.
  10. Verifique la configuración.

Habilitar funciones en el ADC

Las licencias deben estar presentes en el ADC para poder habilitar una función.

Habilitar una función mediante la CLI

En el símbolo del sistema, ejecute los siguientes comandos:

enable feature lb
enable feature ssl

Habilitar una función mediante la interfaz gráfica de usuario

Vaya a Sistema > Configuración y, en el grupo Modos y funciones, seleccione Configurar funciones básicas••y, a continuación, seleccione ••Descarga SSL.

Agregar una dirección IP de subred

Para obtener más información acerca de las direcciones IP de subred, consulte Configurar direcciones IP de subred.

Agregue una dirección SNIP y verifique la configuración mediante la CLI

En el símbolo del sistema, ejecute los siguientes comandos:

add ns ip <IPAddress> <netmask> -type SNIP
show ns ip

Ejemplo:

add ns ip 192.168.17.253 255.255.248.0 -type SNIP
Done
show ns ip
        Ipaddress        Traffic Domain  Type             Mode     Arp      Icmp     Vserver  State
        ---------        --------------  ----             ----     ---      ----     -------  ------
1)      192.168.17.251   0               NetScaler IP     Active   Enabled  Enabled  NA       Enabled
2)      192.168.17.252   0               VIP              Active   Enabled  Enabled  Enabled  Enabled
3)      192.168.17.253   0               SNIP              Active   Enabled  Enabled  NA       Enabled
 Done

Agregue una dirección SNIP y verifique la configuración mediante la interfaz gráfica de usuario

Vaya a Sistema > Red > IPs, agregue una dirección IP y seleccione Tipo de IP como IP de subred.

Copie la clave HSM y el certificado en el ADC

Utilice una utilidad de transferencia de archivos segura para copiar de forma segura la clave (key_simple_examplersa2048key) en la carpeta /var/opt/nfast/kmdata/local, y el certificado (example_selfcert) en la carpeta /nsconfig/ssl del ADC.

Agregar la clave en el ADC

Todas las teclas tienen un prefijo clave simple. Al agregar la clave al ADC, utilice el ident como nombre de clave HSM. Por ejemplo, si la clave que agregó es KEY_Simple_XXXX, el nombre de clave HSM es XXXX.

Importante:

  • El nombre de clave HSM debe ser el mismo que el identificador que especificó al convertir una clave incrustada a un formato de clave simple.
  • Las claves deben estar presentes en el directorio /var/opt/nfast/kmdata/local/ del ADC.

Agregar una clave HSM mediante la CLI

En el símbolo del shell, ejecute el siguiente comando:

add ssl hsmKey <hsmKeyName> -key <string>

Ejemplo:

add ssl hsmKey examplersa2048key –key key_simple_examplersa2048key
Done

Agregar una clave HSM mediante la interfaz gráfica de usuario

Vaya a Administración de tráfico > SSL > HSM y agregue una clave de HSM.

Agregar un par de claves de certificado en el ADC

Para obtener información acerca de los pares de certificados y claves, consulte Agregar o actualizar un par de claves de certificado.

Agregar un par de claves de certificado mediante la CLI

En el símbolo del sistema, ejecute el siguiente comando:

add ssl certKey <certkeyName> -cert <string> -hsmKey <string>

Ejemplo:

add ssl certKey key22 -cert example_selfcert -hsmKey examplersa2048key
Done

Agregue un par de claves de certificado mediante la interfaz gráfica de usuario

Vaya a Administración de tráfico > SSL > Certificados y agregue un par de certificados y claves.

Agregar un servidor virtual

Para obtener información acerca de un servidor virtual, consulte Configuración del servidor virtual SSL.

Configurar un servidor virtual basado en SSL mediante la CLI

En el símbolo del sistema, ejecute el siguiente comando:

add lb vserver <name> <serviceType> <IPAddress> <port>

Ejemplo:

add lb vserver v1 SSL 192.168.17.252 443

Configurar un servidor virtual basado en SSL mediante la interfaz gráfica de usuario

Vaya a Administración del tráfico > Equilibrio de carga > Servidores virtuales, cree un servidor virtual y especifique el protocolo como SSL.

Agregar un objeto de servidor

Antes de poder agregar un objeto de servidor en el ADC, asegúrese de haber creado un servidor back-end. En el siguiente ejemplo se utiliza el módulo integrado Python HTTP Server en un sistema Linux.

Ejemplo:

%python –m SimpleHTTPServer 80

Agregar un objeto de servidor mediante la CLI

En el símbolo del sistema, ejecute el siguiente comando:

add server <name> <IPAddress>

Ejemplo:

add server s1 192.168.17.246

Agregar un objeto de servidor mediante la interfaz gráfica de usuario

Vaya a Administración del tráfico > Equilibrio de carga > Servidores y agregue un servidor.

Agregar un servicio

Para obtener más información, consulte Configurando servicios.

Configurar un servicio mediante la CLI

En el símbolo del sistema, ejecute el siguiente comando:

add service <name> <serverName> <serviceType> <port>

Ejemplo:

add service sr1 s1 HTTP 80

Configurar un servicio mediante la interfaz gráfica de usuario

Vaya a Administración del tráfico > Equilibrio de carga > Servicios y cree un servicio.

Vincular el servicio al servidor virtual

Para obtener más información, consulte Vincular servicios al servidor virtual SSL.

Enlazar un servicio a un servidor virtual mediante la CLI

En el símbolo del sistema, ejecute el siguiente comando:

bind lb vserver <name> <serviceName>

Ejemplo:

bind lb vserver v1 sr1

Enlazar un servicio a un servidor virtual mediante la interfaz gráfica de usuario

  1. Vaya a Administración del tráfico > Equilibrio de carga > Servidores virtuales.
  2. Abra un servidor virtual y haga clic en el panel Servicios para enlazar un servicio al servidor virtual.

Enlazar el par de claves de certificado al servidor virtual en el ADC

Para obtener más información, consulte Enlazar el par de claves de certificado al servidor virtual SSL.

Enlazar un par de claves de certificado a un servidor virtual mediante la CLI

En el símbolo del sistema, ejecute el siguiente comando:

bind ssl vserver <vServerName> -certkeyName <string>

Ejemplo:

bind ssl vserver v1 -certkeyName key22
Warning: Current certificate replaces the previous binding

Enlazar un par de claves de certificado a un servidor virtual mediante la interfaz gráfica de usuario

  1. Vaya a Administración del tráfico > Equilibrio de carga > Servidores virtuales.
  2. Abra un servidor virtual SSL y, en Configuración avanzada, haga clic en Certificado SSL.
  3. Enlazar un certificado de servidor al servidor virtual.

Verificar la configuración

Para ver la configuración mediante la CLI:

En el símbolo del sistema, ejecute los siguientes comandos:

show lb vserver <name>
show ssl vserver <vServerName>

Ejemplo:

show lb vserver v1
        v1 (192.168.17.252:443) - SSL   Type: ADDRESS
        State: UP
        Last state change was at Wed Oct 29 03:11:11 2014
        Time since last state change: 0 days, 00:01:25.220
        Effective State: UP
        Client Idle Timeout: 180 sec
        Down state flush: ENABLED
        Disable Primary Vserver On Down : DISABLED
        Appflow logging: ENABLED
        No. of Bound Services :  1 (Total)       1 (Active)
        Configured Method: LEASTCONNECTION
        Current Method: Round Robin, Reason: Bound service's state changed to UP
        Mode: IP
        Persistence: NONE
        Vserver IP and Port insertion: OFF
        Push: DISABLED  Push VServer:
        Push Multi Clients: NO
        Push Label Rule: none
        L2Conn: OFF
        Skip Persistency: None
        IcmpResponse: PASSIVE
        RHIstate: PASSIVE
        New Service Startup Request Rate: 0 PER_SECOND, Increment Interval: 0
        Mac mode Retain Vlan: DISABLED
        DBS_LB: DISABLED
        Process Local: DISABLED
        Traffic Domain: 0

1) sr1 (192.168.17.246: 80) - HTTP State: UP    Weight: 1
Done
sh ssl vserver v1
        Advanced SSL configuration for VServer v1:
        DH: DISABLED
        Ephemeral RSA: ENABLED          Refresh Count: 0
        Session Reuse: ENABLED          Timeout: 120 seconds
        Cipher Redirect: DISABLED
        SSLv2 Redirect: DISABLED
        ClearText Port: 0
        Client Auth: DISABLED
        SSL Redirect: DISABLED
        Non FIPS Ciphers: DISABLED
        SNI: DISABLED
        SSLv2: DISABLED  SSLv3: DISABLED  TLSv1.0: ENABLED  TLSv1.1: DISABLED  TLSv1.2: DISABLED
        Push Encryption Trigger: Always
        Send Close-Notify: YES

        ECC Curve: P_256, P_384, P_224, P_521

1)      CertKey Name: key22       Server Certificate

1)      Cipher Name: DEFAULT
        Description: Predefined Cipher Alias
 Done

Para ver la configuración mediante la GUI:

Vaya a Administración del tráfico > Equilibrio de carga > Servidores virtuales y haga doble clic en un servidor virtual SSL para abrirlo y ver la configuración.