Beispiel 10: Richtlinienbasierte RSA-Verschlüsselung
Der RSA-Algorithmus verwendet死Funktion PKEY_ENCRYPT_PEM (), um vordefinierte und benutzerdefinierte HTTP-Header- oder Textinhalte 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 sind, verwendet der Algorithmus die Füllmethode RSA_PKCS1.
In einem Beispielszenario kann die Funktion zusammen mit der Funktion B64ENCODE () in einer Rewrite-Aktion verwendet werden, um einen HTTP-Header-Wert durch einen Wert zu ersetzen, der mit einem öffentlichen RSA-Schlüssel verschlüsselt wurde. Die verschlüsselten Daten werden dann vom Empfänger mithilfe des privaten RSA-Schlüssels entschlüsselt.
Sie können die Funktion mithilfe einer Rewrite-Richtlinie implementieren. Dazu müssen Sie die folgenden Aufgaben ausführen:
- Fügen Sie den öffentlichen RSA-Schlüssel als Richtlinienausdruck hinzu.
- Erstellen您Rewrite-Aktion的风景明信片。
- Erstellen Sie eine Rewrite-Richtlinie.
- Binden Sie die Rewrite-Richtlinie als global ein.
- RSA-Verschlüsselung überprüfen
Richtlinienbasierte RSA-Verschlüsselung mit der NetScaler Befehlszeilenschnittstelle
Führen Sie die folgenden Aufgaben aus, um die richtlinienbasierte RSA-Verschlüsselung mit der NetScaler Befehlszeilenschnittstelle zu konfigurieren.
So fügen Sie mit der NetScaler 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 NetScaler 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 NetScaler Befehlszeilenschnittstellehinzu:
add rewrite policy encrypt_pol 'HTTP.REQ.HEADER("data_to_encrypt").EXISTS' encrypt_act
So binden Sie die Umschreibungsrichtlinie global mit der NetScaler Befehlszeilenschnittstelle:
bind rewrite global encrypt_pol 10 -type RES_DEFAULT
So überprüfen Sie die RSA-Verschlüsselung mit der NetScaler 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 die verschlüsselten Daten bei jeder Ausführung unterschiedlich sind. Dies liegt daran, dass das Padding zufällige Byte am Anfang der zu verschlüsselnden Daten einfügt, wodurch die verschlüsselten Daten jedes Mal anders 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 mithilfe der GUI
Mit der GUI können Sie die folgenden Aufgaben ausführen:
Um den öffentlichen RSA-Schlüssel als Richtlinienausdruck mithilfe der GUI hinzuzufügen, gehen Sie wie folgt vor:
- Melden Sie sich bei der NetScaler-Appliance an und navigieren Sie zuConfigurations>AppExpert > Advanced Expressions.
- Klicken Sie im Detailbereich aufHinzufügen, um einen öffentlichen RSA-Schlüssel als erweiterten Richtlinienausdruck zu definieren.
- Stellen Sie auf der Seite „Ausdruck erstellen“ die folgenden Parameter ein:
- Name des Ausdrucks. Name des erweiterten Ausdrucks.
- Expression. Definieren Sie den öffentlichen RSA-Schlüssel mit dem Ausdruckseditor als erweiterten Ausdruck.
- Kommentare. Eine kurze Beschreibung des Ausdrucks.
- Klicken Sie aufErstellen.
Um eine Rewrite-Aktion hinzuzufügen, um eine HTTP-Header-Anfrage mithilfe der GUI zu verschlüsseln:
- Melden Sie sich bei der NetScaler-Appliance an und navigieren Sie zuConfigurations>AppExpert >Rewrite** > Actions.**
- Klicken Sie im Detailbereich aufHinzufügen, um eine Neuschreibaktion hinzuzufügen.
- StellenSie im Bildschirm „Rewrite-Aktion erstellen“ die folgenden Parameter ein:
- Name. Name der Rewrite-Aktion.
- Typ. 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.
- Expression. Name des erweiterten Richtlinienausdrucks, der der Aktion zugeordnet ist.
- Kommentare. Eine kurze Beschreibung der Rewrite-Aktion.
- Klicken Sie aufErstellen.
Gehen Sie wie folgt vor, um mithilfe der GUI eine erweiterte Rewrite-Richtlinie hinzuzufügen:
- Melden Sie sich bei der NetScaler-Appliance an und navigieren Sie zuConfigurations>AppExpert >Rewrite** > Policies.**
- Klicken Sie auf der SeiteRichtlinien neu schreibenaufHinzufügen, um eine Richtlinie zum Umschreiben hinzuzufügen.
- Stellen Sie auf der SeiteCreate Rewrite Policydie folgenden Parameter ein:
- Name. Name der Rewrite-Richtlinie.
- Aktion. Name der Umschreibeaktion, die ausgeführt werden soll, wenn die Anforderung oder Antwort dieser Umschreiberichtlinie entspricht.
- Aktion protokollieren. Name der Nachrichtenprotokollaktion, die verwendet werden soll, wenn eine Anfrage dieser Richtlinie entspricht.
- Aktion mit undefiniertem Ergebnis. Durchzuführende Maßnahmen, wenn das Ergebnis der politischen Bewertung nicht definiert ist.
- Expression. Name des erweiterten Richtlinienausdrucks, der die Aktion auslöst.
- Kommentare. Eine kurze Beschreibung der Rewrite-Aktion.
- Klicken Sie aufErstellen.
Um die Rewrite-Richtlinie global zu binden, verwenden Sie die GUI:
- Melden Sie sich bei der NetScaler-Appliance an und navigieren Sie zuConfigurations>AppExpert >Rewrite** > Policies.**
- Wählen Sie im FensterRichtlinien neu schreibeneine Rewrite-Richtlinie aus, die Sie binden möchten, und klicken Sie aufPolicyManager.
- Stellen Sie auf der Seite Rewrite Policy Manager im Abschnitt Bind Points die folgenden Parameter ein:
- Bind-Punkt. Wählen Sie den Bindungspunkt als Standard Global aus.
- Protokoll. Wählen Sie den Protokolltyp als HTTP aus.
- Art der Verbindung. Wählen Sie den Verbindungstyp als Anfrage aus.
- Klicken Sie aufWeiter, um den AbschnittRichtlinienbindungaufzurufen.
- Wählen Sie im AbschnittRichtlinienbindungdie Rewrite-Richtlinie aus und legen Sie die Bindungsparameter fest.
- Klicken Sie aufBind.