Expressions de stratégie avancées : analyse SSL

Il existe des expressions de stratégie avancées pour analyser les certificats SSL et les messages de bonjour client SSL.

Analyser les certificats SSL

Vous pouvez utiliser des expressions de stratégie avancées pour évaluer les certificats client SSL (Secure Sockets Layer) X.509. Un certificat client est un document électronique qui peut être utilisé pour authentifier l’identité d’un utilisateur. Un certificat client contient (au minimum) des informations de version, un numéro de série, un ID d’algorithme de signature, un nom d’émetteur, une période de validité, un nom de sujet (utilisateur), une clé publique et des signatures.

Vous pouvez examiner à la fois les connexions SSL et les données dans les certificats clients. Par exemple, vous pouvez envoyer des requêtes SSL qui utilisent des chiffrements de faible puissance à une batterie de serveurs virtuels d’équilibrage de charge particulière. La commande suivante est un exemple de stratégie Commutation de contenu qui analyse la force de chiffrement dans une requête et correspond aux forces de chiffrement inférieures ou égales à 40 :

add cs policy p1 -rule "client.ssl.cipher_bits.le(40)"

Autre exemple, vous pouvez configurer une stratégie qui détermine si une demande contient un certificat client :

add cs policy p2 -rule "client.ssl.client_cert exists"

Vous pouvez également configurer une stratégie qui examine des informations particulières dans un certificat client. Par exemple, la stratégie suivante vérifie que le certificat a un ou plusieurs jours avant l’expiration :

add cs policy p2 -rule "client.ssl.client_cert exists && client.ssl.client_cert.days_to_expire.ge(1)"

Remarque

Pour plus d’informations sur l’analyse des dates et heures dans un certificat, reportez-vousFormat des dates et heures dans une expressionaux sections etExpressions pour les dates de certificat SSL.

Préfixes pour les données SSL et de certificat basées sur le texte

Le tableau suivant décrit les préfixes d’expression qui identifient les éléments textuels dans les transactions SSL et les certificats clients.

Tableau 1. Préfixes renvoyant du texte ou des valeurs booléennes pour SSL et les données de certificat client

Préfixe Description
CLIENT.SSL.CLIENT_CERT Renvoie le certificat client SSL dans la transaction SSL actuelle.
CLIENT.SSL.CLIENT_CERT.TO_PEM Renvoie le certificat client SSL au format binaire.
CLIENT.SSL.CIPHER_EXPORTABLE Renvoie une valeur booléenne TRUE si le chiffrement cryptographique SSL cryptographique SSL est exportable.
CLIENT.SSL.CIPHER_NAME Renvoie le nom du chiffrement SSL s’il est invoqué à partir d’une connexion SSL, et une chaîne NULL s’il est invoqué à partir d’une connexion non SSL.
CLIENT.SSL.IS_SSL Renvoie une valeur booléenne TRUE si la connexion actuelle est basée sur SSL.

Préfixes pour les données numériques dans les certificats SSL

Le tableau suivant décrit les préfixes qui évaluent des données numériques autres que les dates dans les certificats SSL. Ces préfixes peuvent être utilisés avec les opérations décrites dans Opérations de base sur les préfixes d’expression et Opérations composées pour les nombres.

Tableau 2. Préfixes qui évaluent des données numériques autres que les dates dans les certificats SSL

Préfixe Description
CLIENT.SSL.CLIENT_CERT.DAYS_TO_EXPIRE Renvoie le nombre de jours pendant lesquels le certificat est valide ou renvoie -1 pour les certificats expirés.
CLIENT.SSL.CLIENT_CERT.PK_SIZE Renvoie la taille de la clé publique utilisée dans le certificat.
CLIENT.SSL.CLIENT_CERT.VERSION Renvoie le numéro de version du certificat. Si la connexion n’est pas basée sur SSL, renvoie zéro (0).
CLIENT.SSL.CIPHER_BITS Renvoie le nombre de bits dans la clé cryptographique. Renvoie 0 si la connexion n’est pas basée sur SSL.
CLIENT.SSL.VERSION Renvoie un nombre qui représente la version du protocole SSL, comme suit : 0. La transaction n’est pas basée sur SSL. ; 0x002. La transaction est SSLv2. ; 0x300. La transaction est SSLv3. ; 0x301. La transaction est TLSv1. ; 0x302. La transaction est TLS 1.1. ; 0x303. La transaction est TLS 1.2 ; 0x304. La transaction est TLS 1.3.

Remarque

Pour les expressions relatives aux dates d’expiration dans un certificat, reportez-vous à la section Expressions pour les dates de certificat SSL.

Expressions pour les certificats SSL

Vous pouvez analyser les certificats SSL en configurant les expressions qui utilisent le préfixe suivant :

CLIENT.SSL.CLIENT_CERT

Cette section décrit les expressions que vous pouvez configurer pour les certificats, à l’exception des expressions qui examinent l’expiration du certificat. Les opérations basées sur le temps sont décrites à la section Expressions de stratégie avancées : utilisation de dates, d’heures et de nombres.

Le tableau suivant décrit les opérations que vous pouvez spécifier pour le préfixe CLIENT.SSL.CLIENT_CERT.

Tableau 3. Opérations pouvant être spécifiées avec le préfixe CLIENT.SSL.CLIENT_CERT

Opération de certificat SSL Description
<certificate>.EXISTS Renvoie une valeur booléenne TRUE si le client possède un certificat SSL.
<certificate>.ISSUER Renvoie le nom distinctif (DN) de l’émetteur dans le certificat sous forme de liste nom-valeur. Un signe égal (« = ») est le délimiteur du nom et de la valeur, et la barre oblique (« / ») est le délimiteur qui sépare les paires nom-valeur. Voici un exemple de DN renvoyé :/C=US/O=myCompany/OU=www.mycompany.com/CN=www.mycompany.com/emailAddress=myuserid@mycompany.com
<certificate>.ISSUER. IGNORE_EMPTY_ELEMENTS Renvoie l’émetteur et ignore les éléments vides dans une liste nom-valeur. Par exemple, considérez ce qui suit : Cert-Issuer: /c=in/st=kar//l=bangelore //o=mycompany/ou=sales/ /emailAddress=myuserid@mycompany.com. L’action Réécriture suivante renvoie un nombre de 6 basé sur la définition de l’émetteur précédente :sh rewrite action insert_ssl_headerNom : insert_ssl\Operation: insert_http_header Target:Cert-Issuer Value:CLIENT.SSL.CLIENT_CERT.ISSUER.COUNT. Toutefois, si vous modifiez la valeur suivante, le nombre retourné est 9 :CLIENT.SSL.CLIENT_CERT.ISSUER.IGNORE_EMPTY_ELEMENTS.COUNT

Analyser le client SSL hello

Vous pouvez analyser le message Hello client SSL en configurant les expressions qui utilisent le préfixe suivant :

Préfixe Description
CLIENT.SSL.CLIENT_HELLO.CIPHERS.HAS_HEXCODE Correspond au code hexadécimal fourni dans l’expression avec les codes hexadécimaux des suites de chiffrement reçues dans le message de bonjour client.
CLIENT.SSL.CLIENT_HELLO.CLIENT_VERSION Version reçue dans l’en-tête du message client Hello.
CLIENT.SSL.CLIENT_HELLO.IS_RENEGOTIATE Renvoie true si un client ou un serveur initie la renégociation de session.
CLIENT.SSL.CLIENT_HELLO.IS_REUSE Renvoie true si l’appliance réutilise la session SSL en fonction de l’ID de session non nul reçu dans le message client Hello.
CLIENT.SSL.CLIENT_HELLO.IS_SCSV Renvoie true si la fonction Signalisation Cipher Suite Value (SCSV) est annoncée dans le message de bonjour client. Le code hexadécimal pour SCSV de secours est 0x5600.
CLIENT.SSL.CLIENT_HELLO.IS_SESSION_TICKET Renvoie true si l’extension de ticket de session avec une longueur différente de zéro est annoncée dans le message client Hello.
CLIENT.SSL.CLIENT_HELLO.LENGTH Longueur reçue dans l’en-tête du message Hello client.
CLIENT.SSL.CLIENT_HELLO.SNI  

Ces expressions peuvent être utilisées au point de liaison CLIENTHELLO_REQ. Pour de plus amples informations, consultez la section Liaison de stratégie SSL.