ADC

Exemple 10 : Cryptage RSA basé sur une stratégie

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 cryptées ne peuvent pas dépasser la longueur de la clé publique. Lorsque les données cryptées sont inférieures à 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 visant à remplacer une valeur d’en-tête HTTP par une valeur cryptée par une clé publique RSA. Les données chiffrées sont ensuite décrypté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éez 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érifiez le chiffrement RSA

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

Effectuez les tâches suivantes pour configurer le chiffrement RSA basé sur des règles à l’aide de l’interface de commande NetScaler.

Pour ajouter une clé publique RSA en tant qu’expression de stratégie à l’aide de l’interface de commande NetScaler, procédez comme suit :

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

Pour ajouter une action de réécriture visant à chiffrer une demande d’en-tête HTTP à l’aide de l’interface de commande NetScaler :

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 NetScaler, procédez comme suit :

add rewrite policy encrypt_pol 'HTTP.REQ.HEADER("data_to_encrypt").EXISTS' encrypt_act
<!--NeedCopy-->

Pour lier une stratégie de réécriture globale à l’aide de l’interface de commande NetScaler, procédez comme suit :

bind rewrite global encrypt_pol 10 -type RES_DEFAULT

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

>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

<!--NeedCopy-->

L’exécution ultérieure de cette commande curl avec les mêmes données à chiffrer montre que les données crypté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 fait que les données cryptées sont 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=
<!--NeedCopy-->

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 NetScaler 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’expressions.
    3. Commentaires. Brève description de l’expression.
  4. Cliquez sur Create.

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 NetScaler et accédez à Configurations > AppExpert > Réécriture > Actions.
  2. Dans le volet de détails, 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 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. Brève description de l’action de réécriture.
  4. Cliquez sur Create.

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

  1. Connectez-vous à l’appliance NetScaler 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. Action de journalisation. Nom de l’action du journal des messages à utiliser lorsqu’une demande correspond à cette stratégie.
    4. Action dont le résultat n’est pas dé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. Brève description de l’action de réécriture.
  4. Cliquez sur Create.

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

  1. Connectez-vous à l’appliance NetScaler 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 comme Demande.
    4. Cliquez sur Continuer pour afficher la section Policy Binding .
    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 : Cryptage RSA basé sur une stratégie