Erweiterte Richtlinienausdrücke: SSL analysieren

Es gibt erweiterte Richtlinienausdrücke, um SSL-Zertifikate und SSL-Client-Hallo Nachrichten zu analysieren.

SSL-Zertifikate analysieren

Sie können erweiterte Richtlinienausdrücke verwenden, um X.509 Secure Sockets Layer (SSL) -Clientzertifikate auszuwerten. Ein Clientzertifikat ist ein elektronisches Dokument, mit dem die Identität eines Benutzers authentifiziert werden kann. Ein Clientzertifikat enthält (mindestens) Versionsinformationen, eine Seriennummer, eine Signaturalgorithmus-ID, einen Ausstellernamen, einen Gültigkeitszeitraum, einen Betreff (Benutzername), einen öffentlichen Schlüssel und Signaturen.

Sie können sowohl SSL-Verbindungen als auch Daten in Clientzertifikaten untersuchen. Beispielsweise können Sie SSL-Anforderungen senden, die Low-Strength Chiffre verwenden, an eine bestimmte Lastenausgleichsfarm. Der folgende Befehl ist ein Beispiel für eine Inhaltswechselrichtlinie, die die Verschlüsselungsstärke in einer Anforderung analysiert und die Verschlüsselungsstärken von kleiner oder gleich 40 abgleicht:

add cs policy p1 -rule "client.ssl.cipher_bits.le(40)"

Als weiteres Beispiel können Sie eine Richtlinie konfigurieren, die bestimmt, ob eine Anforderung ein Clientzertifikat enthält:

add cs policy p2 -rule "client.ssl.client_cert exists"

Sie können auch eine Richtlinie konfigurieren, die bestimmte Informationen in einem Clientzertifikat untersucht. Die folgende Richtlinie überprüft beispielsweise, ob das Zertifikat einen oder mehrere Tage vor Ablauf hat:

add cs policy p2 -rule "client.ssl.client_cert exists && client.ssl.client_cert.days_to_expire.ge(1)"

Hinweis:

Informationen zum Analysieren von Datums- und Uhrzeitangaben in einem Zertifikat finden Sie unter Format von Datums- und Uhrzeiten in einem Ausdruck und Ausdrücke für SSL-Zertifikatsdaten.

Präfixe für textbasierte SSL- und Zertifikatsdaten

In der folgenden Tabelle werden Ausdruckspräfixe beschrieben, die textbasierte Elemente in SSL-Transaktionen und Clientzertifikaten identifizieren.

Tabelle 1. Präfixe, die Text- oder boolesche Werte für SSL- und Clientzertifikatdaten zurückgeben

Präfix Beschreibung
CLIENT.SSL.CLIENT_CERT Gibt das SSL-Clientzertifikat in der aktuellen SSL-Transaktion zurück.
CLIENT.SSL.CLIENT_CERT.TO_PEM Gibt das SSL-Clientzertifikat im Binärformat zurück.
CLIENT.SSL.CIPHER_EXPORTABLE Gibt einen booleschen TRUE zurück, wenn die kryptografische SSL-Verschlüsselung exportierbar ist.
CLIENT.SSL.CIPHER_NAME Gibt den Namen der SSL-Cipher zurück, wenn sie von einer SSL-Verbindung aufgerufen wird, und eine NULL-Zeichenfolge, wenn sie von einer Nicht-SSL-Verbindung aufgerufen wird.
CLIENT.SSL.IS_SSL Gibt einen booleschen TRUE zurück, wenn die aktuelle Verbindung SSL-basiert ist.

Präfixe für numerische Daten in SSL-Zertifikaten

In der folgenden Tabelle werden Präfixe beschrieben, die numerische Daten außer Datumsangaben in SSL-Zertifikaten auswerten. Diese Präfixe können mit den in Grundlegende Vorgänge für Ausdruckspräfixe und Zusammengesetzte Vorgänge für Zahlen beschriebenen Operationen verwendet werden.

Tabelle 2. Präfixe, die numerische Daten außer Datumsangaben in SSL-Zertifikaten auswerten

Präfix Beschreibung
CLIENT.SSL.CLIENT_CERT.DAYS_TO_EXPIRE Gibt die Anzahl der Tage zurück, in denen das Zertifikat gültig ist, oder gibt -1 für abgelaufene Zertifikate zurück.
CLIENT.SSL.CLIENT_CERT.PK_SIZE Gibt die Größe des öffentlichen Schlüssels zurück, der im Zertifikat verwendet wird.
CLIENT.SSL.CLIENT_CERT.VERSION Gibt die Versionsnummer des Zertifikats zurück. Wenn die Verbindung nicht SSL-basiert ist, gibt Null (0) zurück.
CLIENT.SSL.CIPHER_BITS Gibt die Anzahl der Bits im kryptografischen Schlüssel zurück. Gibt 0 zurück, wenn die Verbindung nicht SSL-basiert ist.
CLIENT.SSL.VERSION Gibt eine Zahl zurück, die die SSL-Protokollversion darstellt: 0. Die Transaktion ist nicht SSL-basiert.; 0x002. Die Transaktion lautet SSLv2.; 0x300. Die Transaktion lautet SSLv3.; 0x301. Die Transaktion ist TLSv1.; 0x302. Die Transaktion lautet TLS 1.1.; 0x303. Die Transaktion ist TLS 1.2; 0x304. Die Transaktion ist TLS 1.3.

Hinweis:

Ausdrücke in Bezug auf Ablaufdaten in einem Zertifikat finden Sie unter Ausdrücke für SSL-Zertifikatsdaten.

Ausdrücke für SSL-Zertifikate

Sie können SSL-Zertifikate analysieren, indem Sie Ausdrücke konfigurieren, die das folgende Präfix verwenden:

CLIENT.SSL.CLIENT_CERT

In diesem Abschnitt werden die Ausdrücke beschrieben, die Sie für Zertifikate konfigurieren können, ausgenommen Ausdrücke, die den Zertifikatablauf untersuchen. Zeitbasierte Vorgänge werden unter beschriebenErweiterte Richtlinienausdrücke: Arbeiten mit Datumsangaben, Uhrzeiten und Zahlen.

In der folgenden Tabelle werden Vorgänge beschrieben, die Sie für das Präfix CLIENT.SSL.CLIENT_CERT angeben können.

Tabelle 3. Vorgänge, die mit dem Präfix CLIENT.SSL.CLIENT_CERT angegeben werden können

SSL-Zertifikatvorgang Beschreibung
<certificate>.EXISTS Gibt einen booleschen TRUE zurück, wenn der Client über ein SSL-Zertifikat verfügt.
<certificate>.ISSUER Gibt den Distinguished Name (DN) des Ausstellers im Zertifikat als Name-Wert-Liste zurück. Ein Gleichheitszeichen (“=”) ist das Trennzeichen für den Namen und den Wert, und der Schrägstrich (“/”) ist das Trennzeichen, das die Name-Wert-Paare trennt. Es folgt ein Beispiel für den zurückgegebenen DN: /C=US/O=myCompany/OU=www.mycompany.com/CN=www.mycompany.com/emailAddress=myuserid@mycompany.com
<certificate>.ISSUER. IGNORE_EMPTY_ELEMENTS Gibt den Aussteller zurück und ignoriert die leeren Elemente in einer Name-Wert-Liste. Betrachten Sie beispielsweise Folgendes: Cert-Issuer: /c=in/st=kar//l=bangelore //o=mycompany/ou=sales/ /emailAddress=myuserid@mycompany.com. Die folgende Rewriteaktion gibt eine Anzahl von 6 basierend auf der vorherigen Definition des Ausstellers zurück: sh rewrite action insert_ssl_headerName: insert_ssl\Operation: insert_http_header Target:Cert-Issuer Value:CLIENT.SSL.CLIENT_CERT.ISSUER.COUNT. Wenn Sie jedoch den Wert in den folgenden ändern, ist die zurückgegebene Anzahl 9: CLIENT.SSL.CLIENT_CERT.ISSUER.IGNORE_EMPTY_ELEMENTS.COUNT

Parse SSL client hello

Sie können die SSL-Client-Hallo Nachricht analysieren, indem Sie Ausdrücke konfigurieren, die das folgende Präfix verwenden:

Präfix Beschreibung
CLIENT.SSL.CLIENT_HELLO.CIPHERS.HAS_HEXCODE Entspricht dem im Ausdruck angegebenen Hex-Code mit den Hex-Codes der Chiffre Suites, die in der Client-Hallo Nachricht empfangen wurden.
CLIENT.SSL.CLIENT_HELLO.CLIENT_VERSION Version, die in der Client-Hello Nachrichtenkopfzeile empfangen wurde.
CLIENT.SSL.CLIENT_HELLO.IS_RENEGOTIATE Gibt true zurück, wenn ein Client oder Server eine Sitzungsneuverhandlung initiiert.
CLIENT.SSL.CLIENT_HELLO.IS_REUSE Gibt true zurück, wenn die Appliance die SSL-Sitzung basierend auf der in der Client-hallo-Nachricht empfangenen Sitzungs-ID, die nicht Null ist, wiederverwendet.
CLIENT.SSL.CLIENT_HELLO.IS_SCSV Gibt true zurück, wenn Signaling Cipher Suite Value (SCSV) Funktion in der Client-Hallo Nachricht angekündigt wird. Der Hex-Code für Fallback SCSV ist 0x5600.
CLIENT.SSL.CLIENT_HELLO.IS_SESSION_TICKET Gibt true zurück, wenn die Sitzungsticketerweiterung ungleich Null in der Client-hallo-Nachricht angekündigt wird.
CLIENT.SSL.CLIENT_HELLO.LENGTH Empfangene Länge in der Client-Hello Nachrichtenkopfzeile.
CLIENT.SSL.CLIENT_HELLO.SNI  

Diese Ausdrücke können am Bindpunkt CLIENTHELLO_REQ verwendet werden. Weitere Informationen finden Sie unter SSL-Richtlinienbindung.