Citrix ADC

Exemple 10 : Chiffrement RSA basé sur des stratégies

L’algorithme RSA utilise la fonction PKEY_ENCRYPT_PEM () pour chiffrer le contenu d’en-tête ou de corps HTTP prédéfini et défini par l’utilisateur. La fonction accepte uniquement les clés publiques RSA (pas les clés privées) et les données chiffrées ne peuvent pas dépasser la longueur de la clé publique. Lorsque les données chiffrées sont plus courtes que la longueur de la clé, l’algorithme utilise la méthode de remplissage RSA_PKCS1.

Dans un exemple de scénario, la fonction peut être utilisée avec la fonction B64ENCODE () dans une action de réécriture pour remplacer une valeur d’en-tête HTTP par une valeur chiffrée par une clé publique RSA. Les données chiffrées sont ensuite déchiffrées par le destinataire à l’aide de la clé privée RSA.

Vous pouvez implémenter la fonctionnalité à l’aide d’une stratégie de réécriture. Pour ce faire, vous devez effectuer les tâches suivantes :

  1. Ajoutez une clé publique RSA en tant qu’expression de stratégie.
  2. Créer une action de réécriture.
  3. Créer une stratégie de réécriture.
  4. Lier la stratégie de réécriture comme globale.
  5. Vérifier le chiffrement RSA

Chiffrement RSA basé sur des règles à l’aide de l’interface de commande Citrix ADC

Effectuez les tâches suivantes pour configurer le chiffrement RSA basé sur des stratégies à l’aide de l’interface de commande Citrix ADC.

Pour ajouter une clé publique RSA en tant qu’expression de stratégie à l’aide de l’interface de commande Citrix ADC :

add policy expression pubkey '"-----BEGIN RSA PUBLIC KEY-----MIGJAoGBAKl5vgQEj73Kxp+9yn1v5gPR1pnc4oLM2a0kaWwBOsB6rzCIy6znwnvwCY1xRvQhRlJSAyJbloL7wZFIJ2FOR8Cz+8ZQWXU2syG+udi4EnWqLgFYowF9zK+o79az597eNPAjsHZ/C2oL/+6qY5a/f1z8bQPrHC4GpFfAEJhh/+NnAgMBAAE=-----END RSA PUBLIC KEY-----"'

Pour ajouter réécrire une action pour chiffrer une requête d’en-tête HTTP à l’aide de l’interface de commande Citrix ADC :

add rewrite action encrypt_act insert_http_header encrypted_data

HTTP.REQ.HEADER("data_to_encrypt").PKEY_ENCRYPT_PEM(pubkey).B64ENCODE

Pour ajouter une stratégie de réécriture à l’aide de l’interface de commande Citrix ADC :

add rewrite policy encrypt_pol 'HTTP.REQ.HEADER("data_to_encrypt").EXISTS' encrypt_act

Pour lier la stratégie de réécriture globale à l’aide de l’interface de commande Citrix ADC :

bind rewrite global encrypt_pol 10 -type RES_DEFAULT

Pour vérifier le chiffrement RSA à l’aide de l’interface de commande Citrix ADC :

>curl -v -H "data_to_encrypt: Now is the time that tries men's souls" http://10.217.24.7/`

* About to connect() to 10.217.24.7 port 80 (#0)

*  Trying 10.217.24.7...

*  connected

*  Connected to 10.217.24.7 (10.217.24.7) port 80 (#0)

> GET / HTTP/1.1
> User-Agent: curl/7.24.0 (amd64-portbld-freebsd8.4) libcurl/7.24.0 OpenSSL/0.9.8y zlib/1.2.3
> Host: 10.217.24.7
> Accept: \*/\*
> data_to_encrypt: Now is the time that tries men's souls
>
< HTTP/1.1 200 OK
< Date: Mon, 09 Oct 2017 05:22:37 GMT
< Server: Apache/2.2.24 (FreeBSD) mod_ssl/2.2.24 OpenSSL/0.9.8y DAV/2
< Last-Modified: Thu, 20 Feb 2014 20:29:06 GMT
< ETag: "6bd9f2-2c-4f2dc5b570880"
< Accept-Ranges: bytes
< Content-Length: 44
< Content-Type: text/html
< encrypted_data: UliegKBJqZd7JdaC49XMLEK1+eQN2rEfevypW91gKvBVlaKM9N9/C2BKuztS99SE0xQaisidzN5IgeIcpQMn+CiKYVlLzPG1RuhGaqHYzIt6C8A842da7xE4OlV5SHwScqkqZ5aVrXc3EwtUksna7jOLr40aLeXnnB/DB11pUAE=
<
* Connection #0 to host 10.217.24.7 left intact
<html><body><h1>It works!</h1></body></html>* Closing connection #0

L’exécution ultérieure de cette commande curl avec les mêmes données à chiffrer montre que les données chiffrées sont différentes à chaque exécution. Cela est dû au fait que le remplissage insère des octets aléatoires au début des données à chiffrer, ce qui provoque des données chiffrées différentes à chaque fois.

>curl -v -H "data_to_encrypt: Now is the time that tries men's souls" http://10.217.24.7/`

< encrypted_data: DaOjtl1Pl4DlQKf58MMeL4cFwFvZwhjMqv5aUYM5Iyzk4UpwIYhpRvgTNu2lXEVc1H0tcR1EGC/ViQncLc4EbTurCWLbzjce3+fknnMmzF0lRT6ZZXWbMvsNFOxDA1SnuAgwxWXy/ooe9Wy6SYsL2oi1sr5wTG+RihDd9zP+P14=

>curl -v -H "data_to_encrypt: Now is the time that tries men's souls" http://10.217.24.7/

. . .

< encrypted_data: eej6YbGP68yHn48qFUvi+fkG+OiO8j3yYLScrRBU+TPQ8WeDVaWnDNAVLvL0ZYHHAU1W2YDRYb+8cdKHLpW36QbI6Q5FfBuWKZSI2hSyUvypTpCoAYcHXFv0ns+tRtg0EPNNj+lyGjKQWtFi6K8IXXISoDy42FblKIlaA7gEriY=

Chiffrement RSA basé sur des règles à l’aide de l’interface graphique

L’interface graphique vous permet d’effectuer les tâches suivantes :

Pour ajouter une clé publique RSA en tant qu’expression de stratégie à l’aide de l’interface graphique :

  1. Connectez-vous à l’appliance Citrix ADC et accédez à Configurations > AppExpert > Expressions avancées.
  2. Dans le volet d’informations, cliquez sur Ajouter pour définir une clé publique RSA en tant qu’expression de stratégie avancée.
  3. Dans la page Créer une expression, définissez les paramètres suivants :
    1. Nom de l’expression. Nom de l’expression avancée.
    2. Expression. Définissez la clé publique RSA en tant qu’expression avancée à l’aide de l’Éditeur d’expression.
    3. Commentaires. Une brève description de l’expression.
  4. Cliquez sur Créer.

Pour ajouter réécrire une action pour chiffrer une requête d’en-tête HTTP à l’aide de l’interface graphique :

  1. Connectez-vous à l’appliance Citrix ADC et accédez à Configurations > AppExpert > Réécriture > Actions.
  2. Dans le volet d’informations, cliquez sur Ajouter pour ajouter une action de réécriture.
  3. Dans l’écran Créer une action de réécriture, définissez les paramètres suivants :
    1. Nom. Nom de l’action de réécriture.
    2. Tapez. Sélectionnez le type d’action comme INSERT_HTTP_HEADER.
    3. Utilisez le type d’action pour insérer un en-tête. Entrez le nom de l’en-tête HTTP qui doit être réécrit.
    4. Expression. Nom de l’expression de stratégie avancée associée à l’action.
    5. Commentaires. Une brève description de l’action de réécriture.
  4. Cliquez sur Créer.

Pour ajouter une stratégie avancée de réécriture à l’aide de l’interface graphique :

  1. Connectez-vous à l’appliance Citrix ADC et accédez à Configurations > AppExpert > Réécriture > Stratégies.
  2. Dans la page Réécrire les stratégies, cliquez sur Ajouter pour ajouter une stratégie de réécriture.
  3. Dans la page Créer une stratégie de réécriture, définissez les paramètres suivants :
    1. Nom. Nom de la stratégie de réécriture.
    2. Action. Nom de l’action de réécriture à effectuer si la demande ou la réponse correspond à cette stratégie de réécriture.
    3. Actions de journalisation. Nom de l’action du journal des messages à utiliser lorsqu’une demande correspond à cette stratégie.
    4. Action à résultat indéfini. Action à effectuer si le résultat de l’évaluation de la stratégie n’est pas défini.
    5. Expression. Nom de l’expression de stratégie avancée qui déclenche l’action.
    6. Commentaires. Une brève description de l’action de réécriture.
  4. Cliquez sur Créer.

Pour lier la stratégie de réécriture globale à l’aide de l’interface graphique :

  1. Connectez-vous à l’appliance Citrix ADC et accédez à Configurations > AppExpert > Réécriture > Stratégies.
  2. Dans l’écran Stratégies de réécriture, sélectionnez une stratégie de réécriture à lier, puis cliquez sur Gestionnaire de stratégies .
  3. Dans la page Réécrire le Gestionnaire de stratégies, dans la section Points de liaison, définissez les paramètres suivants :
    1. Point de liaison. Sélectionnez le point de liaison comme Global par défaut.
    2. Protocole. Sélectionnez le type de protocole HTTP.
    3. Type de connexion. Sélectionnez le type de connexion en tant que Demande.
    4. Cliquez sur Continuer pour afficher la section Liaison de stratégie .
    5. Dans la section Liaison de stratégie, sélectionnez la stratégie de réécriture et définissez les paramètres de liaison.
  4. Cliquez sur Bind.

Exemple 10 : Chiffrement RSA basé sur des stratégies