ADC

Actions intégrées SSL et actions définies par l’utilisateur

À moins que vous n’ayez besoin que des actions intégrées dans vos stratégies, vous devez créer les actions avant de créer les stratégies. Ensuite, vous pouvez spécifier les actions lorsque vous créez les stratégies. Les actions intégrées sont de deux types, les actions de contrôle et les actions de données. Vous utilisez des actions de contrôle dans les stratégies de contrôle et des actions de données dans les stratégies de données.

Les actions de contrôle intégrées sont les suivantes :

  • DOCLIENTAUTH : effectue l’authentification du certificat client. (Non pris en charge pour TLS1.3)
  • NOCLIENTAUTH : n’effectuez pas d’authentification de certificat client. (Non pris en charge pour TLS1.3)

Les actions de données intégrées sont les suivantes :

  • Réinitialiser : fermez la connexion en envoyant un paquet RST au client.
  • DROP : dépose tous les paquets du client. La connexion reste ouverte jusqu’à ce que le client la ferme.
  • NOOP : transmet le paquet sans effectuer aucune opération sur celui-ci.

Remarque : Toutes les actions dépendantes de l’authentification client, telles que ClientCertVerification et SSLLogProfile, ne sont pas prises en charge par le protocole TLS 1.3.

Vous pouvez créer des actions de données définies par l’utilisateur. Si vous activez l’authentification client, vous pouvez créer une action SSL pour insérer des données de certificat client dans l’en-tête de la demande avant de transférer la demande au serveur Web.

Si une évaluation de stratégie donne lieu à un état non défini, une action du Fonds des Nations Unies pour le développement (UNDEF) est exécutée. Pour une stratégie de données ou une stratégie de contrôle, vous pouvez spécifier RESET, DROP ou NOOP comme action UNDEF. Pour une stratégie de contrôle, vous avez également la possibilité de spécifier DOCLIENTAUTH ou NOCLIENTAUTH.

Exemples d’actions intégrées dans une stratégie

Dans l’exemple suivant, si le client envoie un chiffrement autre qu’un chiffrement de catégorie EXPORT, l’appliance Citrix ADC demande l’authentification du client. Le client doit fournir un certificat valide pour une transaction réussie.

add ssl policy pol1 -rule CLIENT.SSL.CIPHER_EXPORTABLE.NOT -reqAction DOCLIENTAUTH
<!--NeedCopy-->

Les exemples suivants supposent que l’authentification client est activée.

Si la version du certificat fourni par l’utilisateur correspond à la version de la stratégie, aucune action n’est effectuée et le paquet est transféré :

add ssl policy pol1 -rule CLIENT.SSL.CLIENT_CERT.VERSION.EQ(2) -reqAction NOOP
<!--NeedCopy-->

Si la version du certificat fourni par l’utilisateur correspond à la version de la stratégie, la connexion est supprimée :

add ssl policy pol1 -rule CLIENT.SSL.CLIENT_CERT.VERSION.EQ(2) -reqAction DROP
<!--NeedCopy-->

Si la version du certificat fourni par l’utilisateur correspond à la version de la stratégie, la connexion est réinitialisée :

add ssl policy pol1 -rule CLIENT.SSL.CLIENT_CERT.VERSION.EQ(2) -reqAction RESET
<!--NeedCopy-->

Vérification du certificat client avec authentification client basée sur des stratégies

Vous pouvez définir la vérification du certificat client sur obligatoire ou option lorsque vous avez configuré l’authentification client basée sur une stratégie. La valeur par défaut est obligatoire.

Définir la vérification du certificat client sur facultative à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez :

add ssl action <name> ((-clientAuth ( DOCLIENTAUTH | NOCLIENTAUTH ) [-clientCertVerification ( Mandatory | Optional )]
<!--NeedCopy-->

Exemple :

add ssl action sslact -clientauth DOCLIENTAUTH -clientcertverification OPTIONAL
<!--NeedCopy-->

Définir la vérification du certificat client sur facultative à l’aide de l’interface graphique

  1. Accédez à Gestion du trafic > SSL > Stratégies.

  2. Sous l’onglet Actions SSL, cliquez sur Ajouter .

  3. Spécifiez un nom et dans la liste Vérification du certificat client, sélectionnez Facultatif.

Actions SSL définies par l’utilisateur

En plus des actions intégrées, vous pouvez également configurer d’autres actions SSL en fonction de votre déploiement. Ces actions sont appelées actions définies par l’utilisateur.

Configurer une action SSL définie par l’utilisateur à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez les commandes suivantes pour configurer une action et vérifier la configuration :

add SSL action <name> -clientAuth(DOCLIENTAUTH | NOCLIENTAUTH) -clientCert (ENABLED | DISABLED) certHeader <string> -clientHeader <string> -clientCertSerialNumber (ENABLED | DISABLED) -certSerialHeader <string> -clientCertSubject (ENABLED | DISABLED) -certSubjectHeader <string> -clientCertHash (ENABLED | DISABLED) -certHashHeader <string> -clientCertIssuer (ENABLED | DISABLED) -certIssuerHeader <string> -sessionID (ENABLED | DISABLED) -sessionIDheader <string> -cipher (ENABLED | DISABLED) -cipherHeader <string> -clientCertNotBefore (ENABLED | DISABLED) -certNotBeforeHeader <string> -clientCertNotAfter (ENABLED | DISABLED) -certNotAfterHeader <string> -OWASupport (ENABLED | DISABLED)
<!--NeedCopy-->
show ssl action [<name>]
<!--NeedCopy-->

Exemple :

add ssl action Action-SSL-ClientCert -clientCert ENABLED -certHeader "X-Client-Cert"
<!--NeedCopy-->
show ssl action Action-SSL-ClientCert

1)      Name: Action-SSL-ClientCert
        Data Insertion Action:
        Cert Header: ENABLED            Cert Tag: X-Client-Cert
Done
<!--NeedCopy-->

Configurer une action SSL définie par l’utilisateur à l’aide de l’interface graphique

Accédez à Gestion du trafic > SSL > Stratégies et, sous l’onglet Actions, cliquez sur Ajouter.

Configurer une action SSL pour transférer le trafic client vers un autre serveur virtuel

Les administrateurs peuvent configurer une action SSL pour transférer le trafic client reçu sur un serveur virtuel SSL vers un autre serveur virtuel afin d’éviter le déchargement SSL. Ou pour mettre fin à la connexion sur l’appliance ADC. Ce serveur virtuel peut être du type : SSL, TCP ou SSL_BRIDGE. Par exemple, les administrateurs peuvent choisir de transférer la demande à un autre serveur virtuel pour une action supplémentaire au lieu de mettre fin à la connexion dans l’un des cas suivants :

  • L’appliance ne possède pas de certificat.
  • L’appliance ne prend pas en charge un chiffrement spécifique.

Pour atteindre ce qui précède, un nouveau point de liaison ‘CLIENTHELLO_REQ’ est ajouté pour évaluer le trafic client lorsqu’un client Hello est reçu. Si la stratégie liée au serveur virtuel recevant le trafic client est évaluée à true après avoir analysé le client hello, le trafic est transféré à un autre serveur virtuel. Si ce serveur virtuel est de type SSL, il effectue la poignée de main. Si ce serveur virtuel est de type TCP ou SSL_BRIDGE, le serveur principal effectue la liaison.

Dans la version 12.1-49.x, seules les actions de transfert et de réinitialisation sont prises en charge pour le point de liaison CLIENTHELLO_REQ. Les préfixes d’expression suivants sont disponibles :

  • CLIENT.SSL.CLIENT_HELLO.CIPHERS.HAS_HEXCODE
  • CLIENT.SSL.CLIENT_HELLO.CLIENT_VERSION
  • CLIENT.SSL.CLIENT_HELLO.IS_RENEGOTIATE
  • CLIENT.SSL.CLIENT_HELLO.IS_REUSE
  • CLIENT.SSL.CLIENT_HELLO.IS_SCSV
  • CLIENT.SSL.CLIENT_HELLO.IS_SESSION_TICKET
  • CLIENT.SSL.CLIENT_HELLO.LENGTH
  • CLIENT.SSL.CLIENT_HELLO.SNI
  • CLIENT.SSL.CLIENT_HELLO.ALPN.HAS_NEXTPROTOCOL (à partir de la version 13.0 build 61.x)

Pour obtenir une description de ces préfixes, voir Expressions de stratégie avancées : analyse SSL.

Un paramètre forward est ajouté à la commande add SSL action et un nouveau point de liaison CLIENTHELLO_REQ est ajouté à la commande bind ssl vserver.

Configuration à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez :

add ssl action <name> -forward <virtual server name>

add ssl policy <name> -rule <expression> -action <string>

bind ssl vserver <vServerName> -policyName <string> -priority <positive_integer> -type <type>
<!--NeedCopy-->

EXEMPLE :

add ssl action act1 -forward v2

add ssl policy pol1 -rule client.ssl.client_hello.ciphers.has_hexcode(0x002f) -action act1

bind ssl vserver v1 -policyName pol1 -priority 1 -type CLIENTHELLO_REQ
<!--NeedCopy-->

Configuration à l’aide de l’interface graphique

Accédez à Gestion du trafic > SSL > Stratégies.

Créer une action SSL :

  1. Dans Actions SSL, cliquez sur Ajouter.
  2. Dans Créer une action SSL, spécifiez un nom pour l’action.
  3. Dans Serveur virtuel Action de transfert, sélectionnez un serveur virtuel existant ou ajoutez un nouveau serveur virtuel vers lequel transférer le trafic.
  4. Vous pouvez également définir d’autres paramètres.
  5. Cliquez sur Créer.

Créer une stratégie SSL :

  1. Dans Stratégies SSL, cliquez sur Ajouter.
  2. Dans Créer une stratégie SSL, spécifiez un nom pour la stratégie.
  3. Dans Action, sélectionnez l’action que vous avez créée précédemment.
  4. Dans Expression Editor, entrez la règle à évaluer.
  5. Cliquez sur Créer.

Créez ou ajoutez un serveur virtuel et une stratégie de liaison :

  1. Accédez à Gestion du trafic > Équilibrage de charge > Serveurs virtuels.
  2. Ajoutez ou sélectionnez un serveur virtuel.
  3. Dans Paramètres avancés, cliquez sur Stratégies SSL.
  4. Cliquez dans la section Stratégie SSL.
  5. Dans Sélectionner une stratégie, sélectionnez la stratégie que vous avez créée précédemment.
  6. Dans Liaison de stratégie, spécifiez une priorité pour la stratégie.
  7. Dans Type, sélectionnez CLIENTHELLO_REQ.
  8. Cliquez sur Bind.
  9. Cliquez sur Terminé.

Pour connaître la configuration de bout en bout pour les cas d’utilisation les plus courants, consultez les rubriques suivantes :

Action SSL pour sélectionner sélectivement des autorités de certification basées sur SNI pour l’authentification du client

Vous pouvez envoyer uniquement la liste des autorités de certification basées sur SNI (domaine) dans la demande de certificat client plutôt que la liste de toutes les autorités de certification liées à un serveur virtuel SSL. Par exemple, lorsqu’un client Hello est reçu, seuls les certificats d’autorité de certification basés sur l’expression de stratégie SSL (par exemple, SNI) sont envoyés. Pour envoyer un ensemble spécifique de certificats, vous devez créer un groupe de certificats d’autorité de certification. Ensuite, lier ce groupe à une action SSL et lier l’action à une stratégie SSL. Si la stratégie liée au serveur virtuel recevant le trafic client est évaluée à true après avoir analysé le client Hello, seul un groupe de certificats d’autorité de certification spécifique est envoyé dans le certificat de demande client.

Auparavant, vous deviez lier des certificats d’autorité de certification à un serveur virtuel SSL. Avec cette amélioration, vous pouvez simplement ajouter des groupes de certificats CA et les associer à une action SSL.

Remarque : activez l’authentification client et SNI sur le serveur virtuel SSL. Liez les certificats SNI corrects au serveur virtuel.

Procédez comme suit :

  1. Ajoutez un groupe de certificats d’autorité de certification.

  2. Ajoutez des paires de clés de certificat.

  3. Liez les paires de clés de certificat à ce groupe.

  4. Ajoutez une action SSL.

  5. Ajoutez une stratégie SSL. Spécifiez l’action dans la stratégie.

  6. Liez la stratégie à un serveur virtuel SSL. Spécifiez le point de liaison comme CLIENTHELLO_REQ.

Configuration à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez les commandes suivantes dans une séquence :

add ssl caCertGroup <caCertGroupName>
add ssl certkey <certkey_name> -cert <cert> -key <key>
bind ssl caCertGroup <caCertGroupName> <certkey_name>
add ssl action <name> -caCertGrpName <string>
add ssl policy <name> -rule <expression> -action <string>
bind ssl vserver <vServerName> -policyName <string> -priority <positive_integer> -type CLIENTHELLO_REQ
<!--NeedCopy-->

Exemple :

add ssl cacertGroup ca_cert_group

add ssl certkey ca_certkey1 -cert cacert1 -key cakey1
add ssl certkey ca_certkey2 -cert cacert2 -key cakey2
add ssl certkey snicert -cert snicert -key snikey

bind ssl cacertGroup ca_cert_group ca_certkey1
bind ssl caCertGroup ca_cert_group ca_certkey2
<!--NeedCopy-->
sh ssl caCertGroup ca_cert_group

CA GROUP NAME:     ca_cert_group
ACTIONS REFERRING: 1

1) CertKey Name: ca_certkey1   CA Certificate   CRLCheck: Optional   CA_Name Sent
2) CertKey Name: ca_certkey2   CA Certificate   CRLCheck: Optional   CA_Name Sent
<!--NeedCopy-->
add ssl action pick_ca_group -cacertGrpName ca_cert_group
<!--NeedCopy-->
sh ssl action pick_ca_group
1) Name: pick_ca_group
   Type: Data Insertion
   PickCaCertGroup: ca_cert_group
   Hits: 0
   Undef Hits: 0
   Action Reference Count: 1
<!--NeedCopy-->
add ssl policy snipolicy -rule client.ssl.client_hello.sni.contains("abc") -action pick_ca_group
bind ssl vserver v_SSL -policyName snipolicy -type CLIENTHELLO_REQ -priority 10
<!--NeedCopy-->
sh ssl policy snipolicy
    Name: snipolicy
    Rule: client.ssl.client_hello.sni.contains("abc")
    Action: pick_ca_group
    UndefAction: Use Global
    Hits: 0
    Undef Hits: 0


    Policy is bound to following entities
1)  Bound to: CLIENTHELLO_REQ VSERVER v_SSL
    Priority: 10
<!--NeedCopy-->
set ssl vserver v_SSL -clientauth ENABLED -SNIEnable ENABLED
bind ssl vserver v_SSL -certkeyName snicert -sniCert
<!--NeedCopy-->
sh ssl vserver v_SSL

    Advanced SSL configuration for VServer v_SSL:
    DH: DISABLED
    DH Private-Key Exponent Size Limit: DISABLED   Ephemeral RSA: ENABLED   Refresh Count: 0
    Session Reuse: ENABLED   Timeout: 120 seconds
    Cipher Redirect: DISABLED
    SSLv2 Redirect: DISABLED
    ClearText Port: 0
    Client Auth: ENABLED   Client Cert Required: Mandatory
    SSL Redirect: DISABLED
    Non FIPS Ciphers: DISABLED
    SNI: ENABLED
    OCSP Stapling: DISABLED
    HSTS: DISABLED
    HSTS IncludeSubDomains: NO
    HSTS Max-Age: 0
    SSLv2: DISABLED  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: snicert   Server Certificate for SNI


    Data policy
1)  Policy Name: snipolicy  Priority: 10



1)  Cipher Name: DEFAULT
    Description: Default cipher list with encryption strength >= 128bit
<!--NeedCopy-->

Configuration à l’aide de l’interface graphique

Créez un groupe de certificats d’autorité de certification et liez des certificats au groupe :

  1. Accédez à Gestion du trafic > SSL > Groupe de certificats CA.
  2. Cliquez sur Ajouter et spécifiez un nom pour le groupe.
  3. Cliquez sur Créer.
  4. Sélectionnez le groupe de certificats de l’autorité de certification, puis cliquez sur Afficher les liaisons.
  5. Cliquez sur Bind.
  6. Dans la page Liaison de certificat de l’autorité de certification, sélectionnez un certificat existant ou cliquez sur Ajouter pour ajouter un nouveau certificat.
  7. Cliquez sur Sélectionner, puis sur Lier.
  8. Pour lier un autre certificat, répétez les étapes 5 à 7.
  9. Cliquez sur Fermer.

Accédez à Gestion du trafic > SSL > Stratégies.

Créer une action SSL :

  1. Dans Actions SSL, cliquez sur Ajouter.
  2. Dans Créer une action SSL, spécifiez un nom pour l’action.
  3. Dans Serveur virtuel Action de transfert, sélectionnez un serveur virtuel existant ou ajoutez un serveur virtuel vers lequel transférer le trafic.
  4. Vous pouvez également définir d’autres paramètres.
  5. Cliquez sur Créer.

Créer une stratégie SSL :

  1. Dans Stratégies SSL, cliquez sur Ajouter.
  2. Dans Créer une stratégie SSL, spécifiez un nom pour la stratégie.
  3. Dans Action, sélectionnez l’action créée précédemment.
  4. Dans Expression Editor, entrez la règle à évaluer.
  5. Cliquez sur Créer.

Créez ou ajoutez un serveur virtuel et une stratégie de liaison :

  1. Accédez à Gestion du trafic > Équilibrage de charge > Serveurs virtuels.
  2. Ajoutez ou sélectionnez un serveur virtuel.
  3. Dans Paramètres avancés, cliquez sur Stratégies SSL.
  4. Cliquez dans la section Stratégie SSL.
  5. Dans Sélectionner une stratégie, sélectionnez la stratégie que vous avez créée précédemment.
  6. Dans Liaison de stratégie, spécifiez une priorité pour la stratégie.
  7. Dans Type, sélectionnez CLIENTHELLO_REQ.
  8. Cliquez sur Bind.
  9. Cliquez sur Terminé.

Dissocier un groupe de certificats d’autorité de certification à l’aide de l’interface graphique

  1. Accédez à Gestion du trafic > SSL > Groupe de certificats CA.
  2. Sélectionnez un groupe de certificats et cliquez sur Afficher les liaisons.
  3. Sélectionnez le certificat à supprimer du groupe et cliquez sur Dissocier.
  4. Si vous êtes invité à confirmer, cliquez sur **Oui••.
  5. Cliquez sur Fermer.

Supprimer un groupe de certificats d’autorité de certification à l’aide de l’interface graphique

  1. Accédez à Gestion du trafic > SSL > Groupe de certificats CA.
  2. Sélectionnez un groupe de certificats et cliquez sur Supprimer.
  3. Si vous y êtes invité, cliquez sur Oui.