ADC

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 Content Switching-Richtlinie, 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)"
<!--NeedCopy-->

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"
<!--NeedCopy-->

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)"
<!--NeedCopy-->

Hinweis:

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

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

Prefix 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 Operationen verwendet werden, die unter Grundlegende Operationen für Ausdruckspräfixe und zusammengesetzte Operationen für Zahlenbeschrieben sind.

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

Prefix 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:

Informationen zu Ausdrücken im Zusammenhang mit Ablaufdatum in einem Zertifikat finden Sie unter Ausdrücke für SSL-Zertifikatdaten.

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 Erweiterte Richtlinienausdrücke: Arbeiten mit Datumsangaben, Zeiten und Zahlenbeschrieben.

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 Rewrite-Aktion gibt basierend auf der vorhergehenden Emittentendefinition eine Anzahl von 6 zurück: sh rewrite action insert_ssl_header Name: 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:

Prefix 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 Gibt den Servernamen zurück, der in der Servernamen-Erweiterung der Clienthallo empfangen wurde.
CLIENT.SSL.CLIENT_HELLO.ALPN.HAS_NEXTPROTOCOL Gibt true zurück, wenn das in der Clienthallo empfangene Anwendungsprotokoll in der ALPN-Erweiterung mit dem Protokoll übereinstimmt, das im Ausdruck angegeben ist.

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

Erweiterte Richtlinienausdrücke: SSL analysieren