Citrix ADC

Beispiel 10: Richtlinienbasierte RSA-Verschlüsselung

Der RSA-Algorithmus verwendet die Funktion PKEY_ENCRYPT_PEM (), um HTTP-vordefinierte und benutzerdefinierte Header- oder Körperinhalte zu verschlüsseln. Die Funktion akzeptiert nur öffentliche RSA-Schlüssel (keine privaten Schlüssel) und die verschlüsselten Daten dürfen nicht länger als die Länge des öffentlichen Schlüssels sein. Wenn die zu verschlüsselnden Daten kürzer als die Schlüssellänge ist, verwendet der Algorithmus die RSA_PKCS1-Auffüllmethode.

In einem Beispielszenario kann die Funktion mit der Funktion B64ENCODE () in einer Umschreibaktion verwendet werden, um einen HTTP-Header-Wert durch einen durch einen öffentlichen RSA-Schlüssel verschlüsselten Wert zu ersetzen. Die verschlüsselten Daten werden dann vom Empfänger mit dem privaten RSA-Schlüssel entschlüsselt.

Sie können das Feature mithilfe einer Umschreibungsrichtlinie implementieren. Um dies zu tun, müssen Sie die folgenden Aufgaben ausführen:

  1. Fügen Sie den öffentlichen RSA-Schlüssel als Richtlinienausdruck hinzu.
  2. Rewrite-Aktion erstellen.
  3. Erstellen Sie eine Umschreibungsrichtlinie.
  4. Binden Sie die Richtlinie zum Umschreiben als global.
  5. Überprüfen der RSA-Verschlüsselung

Richtlinienbasierte RSA-Verschlüsselung mit der Citrix ADC Befehlsschnittstelle

Führen Sie die folgenden Aufgaben aus, um die richtlinienbasierte RSA-Verschlüsselung mit der Citrix ADC Befehlsschnittstelle zu konfigurieren.

So fügen Sie mit der Citrix ADC Befehlsschnittstelle einen öffentlichen RSA-Schlüssel als Richtlinienausdruckhinzu:

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

So fügen Sie eine Aktion zum Verschlüsseln einer HTTP-Header-Anforderung mit der Citrix ADC Befehlsschnittstellehinzu:

add rewrite action encrypt_act insert_http_header encrypted_data

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

So fügen Sie Rewrite-Richtlinie mit der Citrix ADC Befehlsschnittstellehinzu:

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

So binden Sie die Umschreibungsrichtlinie global mit der Citrix ADC Befehlsschnittstelle:

bind rewrite global encrypt_pol 10 -type RES_DEFAULT

So überprüfen Sie die RSA-Verschlüsselung mit der Citrix ADC Befehlsschnittstelle:

>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

Die nachfolgende Ausführung dieses curl-Befehls mit denselben zu verschlüsselnden Daten zeigt, dass sich die verschlüsselten Daten bei jeder Ausführung unterscheiden. Dies liegt daran, dass die Auffüllung zufällige Bytes am Anfang der zu verschlüsselnden Daten einfügt, wodurch die verschlüsselten Daten jedes Mal unterschiedlich sind.

>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=

Richtlinienbasierte RSA-Verschlüsselung mit der GUI

Mit der grafischen Benutzeroberfläche können Sie die folgenden Aufgaben ausführen:

So fügen Sie mit der GUI einen öffentlichen RSA-Schlüssel als Richtlinienausdruckhinzu:

  1. Melden Sie sich bei der Citrix ADC Appliance an, und navigieren Sie zu Konfigurationen > AppExpert > Erweiterte Ausdrücke .
  2. Klicken Sie im Detailbereich auf Hinzufügen, um einen öffentlichen RSA-Schlüssel als erweiterten Richtlinienausdruck zu definieren.
  3. Legen Sie auf der Seite Ausdruck erstellen die folgenden Parameter fest:
    1. Name des Ausdrucks. Name des erweiterten Ausdrucks.
    2. Ausdruck. Definieren Sie den öffentlichen RSA-Schlüssel als erweiterten Ausdruck mit dem Ausdruckseditor.
    3. Bemerkungen. Eine kurze Beschreibung des Ausdrucks.
  4. Klicken Sie auf Erstellen.

So fügen Sie eine Aktion zum Verschlüsseln einer HTTP-Header-Anforderung mit der GUIhinzu:

  1. Melden Sie sich bei der Citrix ADC Appliance an, und navigieren Sie zu Konfigurationen > AppExpert > Umschreiben > Aktionen .
  2. Klicken Sie im Detailbereich auf Hinzufügen, um eine Neuschreibaktion hinzuzufügen.
  3. Legen Sie im Bildschirm Rewrite-Aktion erstellen die folgenden Parameter fest:
    1. Name. Name der Umschreibungsaktion.
    2. Geben Sie ein. Wählen Sie den Aktionstyp als INSERT_HTTP_HEADER aus.
    3. Verwenden Sie den Aktionstyp, um eine Kopfzeile einzufügen. Geben Sie den Namen des HTTP-Headers ein, der neu geschrieben werden muss.
    4. Ausdruck. Name des erweiterten Richtlinienausdrucks, der der Aktion zugeordnet ist.
    5. Bemerkungen. Eine kurze Beschreibung der Umschreibaktion.
  4. Klicken Sie auf Erstellen.

So fügen Sie mit der GUI eine erweiterte Rewrite-Richtliniehinzu:

  1. Melden Sie sich bei der Citrix ADC Appliance an, und navigieren Sie zu Konfigurationen > AppExpert > Umschreiben > Richtlinien .
  2. Klicken Sie auf der Seite Richtlinien umschreiben auf Hinzufügen, um eine Richtlinie zum Umschreiben hinzuzufügen.
  3. Legen Sie auf der Seite Rewrite-Richtlinie erstellen die folgenden Parameter fest:
    1. Name. Name der Richtlinie zum Umschreiben.
    2. Aktion. Name der Umschreibaktion, die ausgeführt werden soll, wenn die Anforderung oder Antwort mit dieser Umschreibrichtlinie übereinstimmt.
    3. Aktion protokollieren. Name der Nachrichtenprotokollaktion, die verwendet werden soll, wenn eine Anforderung mit dieser Richtlinie übereinstimmt.
    4. Aktion Nicht definiertes Ergebnis. Aktion, die ausgeführt werden soll, wenn das Ergebnis der Richtlinienbewertung nicht definiert ist.
    5. Ausdruck. Name des erweiterten Richtlinienausdrucks, der die Aktion auslöst.
    6. Bemerkungen. Eine kurze Beschreibung der Umschreibaktion.
  4. Klicken Sie auf Erstellen.

So binden Sie die Umschreibungsrichtlinie global mit der GUI:

  1. Melden Sie sich bei der Citrix ADC Appliance an, und navigieren Sie zu Konfigurationen > AppExpert > Umschreiben > Richtlinien .
  2. Wählen Sie im Bildschirm Richtlinien umschreiben eine Richtlinie zum Umschreiben, die Sie binden möchten, und klicken Sie auf Richtlinien-Manager .
  3. Legen Sie auf der Seite Richtlinien-Manager umschreiben im Abschnitt Bindpunkte die folgenden Parameter fest:
    1. Bindepunkt. Wählen Sie den Bindungspunkt als Standard Global aus.
    2. Protokoll. Wählen Sie den Protokolltyp als HTTP aus.
    3. Verbindungstyp. Wählen Sie den Verbindungstyp als Anforderung aus.
    4. Klicken Sie auf Weiter, um den Abschnitt Richtlinienbindung anzuzeigen.
    5. Wählen Sie im Abschnitt Richtlinienbindung die Richtlinie zum Umschreiben aus, und legen Sie die Bindungsparameter fest.
  4. Klicken Sie auf Bind.

Beispiel 10: Richtlinienbasierte RSA-Verschlüsselung