Beispiel 10: Richtlinienbasierte RSA-Verschlusselung
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:
- Fügen Sie den öffentlichen RSA-Schlüssel als Richtlinienausdruck hinzu.
- Rewrite-Aktion erstellen.
- Erstellen Sie eine Umschreibungsrichtlinie.
- Binden Sie die Richtlinie zum Umschreiben als global.
- Überprüfen der RSA-Verschlüsselung
Richtlinienbasierte RSA-Verschlüsselung mit der Citrix ADC Befehlszeilenschnittstelle
Führen Sie die folgenden Aufgaben aus, um die richtlinienbasierte RSA-Verschlüsselung mit der Citrix ADC Befehlszeilenschnittstelle zu konfigurieren.
So fügen Sie mit der Citrix ADC Befehlszeilenschnittstelle 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 Befehlszeilenschnittstellehinzu:
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 Befehlszeilenschnittstellehinzu:
add rewrite policy encrypt_pol 'HTTP.REQ.HEADER("data_to_encrypt").EXISTS' encrypt_act
So binden Sie die Umschreibungsrichtlinie global mit der Citrix ADC Befehlszeilenschnittstelle:
bind rewrite global encrypt_pol 10 -type RES_DEFAULT
So überprüfen Sie die RSA-Verschlüsselung mit der Citrix ADC Befehlszeilenschnittstelle:
>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 It works!
* 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:
- Melden Sie sich bei der Citrix ADC Appliance an, und navigieren Sie zuKonfigurationen>一个ppExpert>Erweiterte Ausdrücke.
- Klicken Sie im Detailbereich aufHinzufügen, um einen öffentlichen RSA-Schlüssel als erweiterten Richtlinienausdruck zu definieren.
- Legen Sie auf der Seite Ausdruck erstellen die folgenden Parameter fest:
- Name des Ausdrucks. Name des erweiterten Ausdrucks.
- 一个usdruck. Definieren Sie den öffentlichen RSA-Schlüssel als erweiterten Ausdruck mit dem Ausdruckseditor.
- Kommentare. Eine kurze Beschreibung des Ausdrucks.
- Klicken Sie aufErstellen.
So fügen Sie eine Aktion zum Verschlüsseln einer HTTP-Header-Anforderung mit der GUIhinzu:
- Melden Sie sich bei der Citrix ADC Appliance an, und navigieren Sie zuKonfigurationen>一个ppExpert>Umschreiben>一个ktionen.
- Klicken Sie im Detailbereich aufHinzufügen, um eine Neuschreibaktion hinzuzufügen.
- Legen Sie im Bildschirm Rewrite-Aktion erstellendie folgenden Parameter fest:
- Name. Name der Umschreibungsaktion.
- Geben Sie ein. Wählen Sie den Aktionstyp als INSERT_HTTP_HEADER aus.
- Verwenden Sie den Aktionstyp, um eine Kopfzeile einzufügen. Geben Sie den Namen des HTTP-Headers ein, der neu geschrieben werden muss.
- 一个usdruck. Name des erweiterten Richtlinienausdrucks, der der Aktion zugeordnet ist.
- Kommentare. Eine kurze Beschreibung der Umschreibaktion.
- Klicken Sie aufErstellen.
So fügen Sie mit der GUI eine erweiterte Rewrite-Richtliniehinzu:
- Melden Sie sich bei der Citrix ADC Appliance an, und navigieren Sie zuKonfigurationen>一个ppExpert>Umschreiben>Richtlinien.
- Klicken Sie auf der SeiteRichtlinien umschreibenaufHinzufügen, um eine Richtlinie zum Umschreiben hinzuzufügen.
- Legen Sie auf der Seite Rewrite-Richtlinie erstellendie folgenden Parameter fest:
- Name. Name der Richtlinie zum Umschreiben.
- 一个ktion: Name der Umschreibaktion, die ausgeführt werden soll, wenn die Anforderung oder Antwort mit dieser Umschreibrichtlinie übereinstimmt.
- 一个ktion protokollieren. Name der Nachrichtenprotokollaktion, die verwendet werden soll, wenn eine Anforderung mit dieser Richtlinie übereinstimmt.
- 一个ktion Nicht definiertes Ergebnis. Aktion, die ausgeführt werden soll, wenn das Ergebnis der Richtlinienbewertung nicht definiert ist.
- 一个usdruck. Name des erweiterten Richtlinienausdrucks, der die Aktion auslöst.
- Kommentare. Eine kurze Beschreibung der Umschreibaktion.
- Klicken Sie aufErstellen.
So binden Sie die Umschreibungsrichtlinie global mit der GUI:
- Melden Sie sich bei der Citrix ADC Appliance an, und navigieren Sie zuKonfigurationen>一个ppExpert>Umschreiben>Richtlinien.
- Wählen Sie im BildschirmRichtlinien umschreibeneine Richtlinie zum Umschreiben, die Sie binden möchten, und klicken Sie aufRichtlinien-Manager.
- Legen Sie auf der Seite Richtlinien-Manager umschreiben im Abschnitt Bindpunkte die folgenden Parameter fest:
- Verbindungspunkt. Wählen Sie den Bindungspunkt als Standard Global aus.
- -Protokoll. Wählen Sie den Protokolltyp als HTTP aus.
- Verbindungstyp. Wählen Sie den Verbindungstyp als Anforderung aus.
- Klicken Sie aufWeiter, um den AbschnittRichtlinienbindunganzuzeigen.
- Wählen Sie im AbschnittRichtlinienbindungdie Richtlinie zum Umschreiben aus, und legen Sie die Bindungsparameter fest.
- Klicken Sie aufBind.