Citrix ADC

Erweiterte Richtlinienausdrücke: SSL parsen

Es gibt erweiterte Richtlinienausdrücke, um SSL-Zertifikate und Hello-Nachrichten des SSL-Clients zu analysieren.

Analysieren Sie SSL-Zertifikate

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, eine Gültigkeitsdauer, einen Antragstellernamen (Benutzer), einen öffentlichen Schlüssel und Signaturen.

Sie können sowohl SSL-Verbindungen als auch Daten in Clientzertifikaten untersuchen. Beispielsweise möchten Sie möglicherweise SSL-Anforderungen, die Verschlüsselungen mit niedriger Stärke verwenden, an eine bestimmte virtuelle Serverfarm mit Lastausgleich senden. Der folgende Befehl ist ein Beispiel für eine Content Switching-Richtlinie, die die Verschlüsselungsstärke in einer Anforderung analysiert und Verschlüsselungsstärken kleiner oder gleich 40 entspricht:

添加cs政策p1规则”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)" 

Ein Beispiel für die Verwendung von JA3 Fingerabdrücken:

add ssl policy ja3_pol -rule "CLIENT.SSL.JA3_FINGERPRINT.EQ(bb4c15a90e93a25ddc16274395bce4c6)" -action reset 

Oder ein Beispiel für die Verwendung von JA3-Fingerabdrücken mit Patset:

add policy patset pat1 bind policy patset pat1 bb4c15a90e93a25ddc16274395bce4c6 -index 1 bind policy patset pat1 cd3c15a90e93a25ddc16274395bce6b4 -index 2 add ssl policy ssl_ja3_pol -rule CLIENT.SSL.JA3_FINGERPRINT.contains_any("pat1") -action reset 

Hinweis

Informationen zum Analysieren von Datums und Uhrzeiten in einem Zertifikat finden Sie unterFormat von Datums und Zeiten in einem AusdruckundAusdrü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 Clientzertifikatsdaten 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 ein boolesches TRUE zurück, wenn die kryptografische SSL-Verschlüsselung exportierbar ist.
CLIENT.SSL.CIPHER_NAME Gibt den Namen der SSL-Verschlüsselung 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 ein boolesches TRUE zurück, wenn die aktuelle Verbindung SSL-basiert ist.
CLIENT.SSL.JA3_FINGERPRINT Gibt ein boolesches TRUE zurück, wenn der konfigurierte JA3-Fingerabdruck mit dem JA3-Fingerabdruck in der Hello-Nachricht des Clients übereinstimmt.Hinweis:Dieser Ausdruck ist in Version 13.1 Build 12.x und höher verfügbar.

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 unterGrundlegende Operationen für Ausdruckspräfixeundzusammengesetzte Operationen für Zahlenbeschrieben sind.

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

Präfix Beschreibung
CLIENT.SSL.CLIENT_CERT.DAYS_TO_EXPIRE Gibt die Anzahl der Tage zurück, an 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, wird Null (0) zurückgegeben.
CLIENT.SSL.CIPHER_BITS Gibt die Anzahl der Bits im kryptographischen 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, wie folgt: 0. Die Transaktion ist nicht SSL-basiert: 0x002. Die Transaktion ist SSLv2:0x300. Die Transaktion ist SSLv3:0x301. Die Transaktion ist TLSv1:0x302. Die Transaktion ist 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 unterAusdrü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 unterErweiterte Richtlinienausdrücke: Arbeiten mit Datumsangaben, Zeiten und Zahlenbeschrieben.

In der folgenden Tabelle werden die 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-Zertifikat Betrieb Beschreibung
.EXISTS Gibt ein boolesches TRUE zurück, wenn der Client über ein SSL-Zertifikat verfügt.
.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
.ISSUER. IGNORE_EMPTY_ELEMENTS Gibt den Emittenten zurück und ignoriert die leeren Elemente in einer Name-Wert-Liste. Beispielsweise, Bedenken Sie 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_headerName: insert_sslOperation: insert_http_header Target:Cert-IssuerValue: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 hallo

Sie können die Hello-Nachricht des SSL-Clients 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 Verschlüsselungssammlungen, die in der Hello-Nachricht des Clients empfangen wurden.
CLIENT.SSL.CLIENT_HELLO.CLIENT_VERSION Version, die im Hello-Nachrichtenheader des Clients empfangen wurde.
CLIENT.SSL.CLIENT_HELLO.IS_RENEGOTIATE 有真正的zurück, wenn ein Client oder Server eine Sitzungsneuverhandlung initiiert.
CLIENT.SSL.CLIENT_HELLO.IS_REUSE 有真正的zurück, wenn die Appliance die SSL-Sitzung basierend auf der in der Client-Hallo-Nachricht empfangenen Sitzungs-ID ungleich Null wiederverwendet.
CLIENT.SSL.CLIENT_HELLO.IS_SCSV 有真正的zurück, wenn die Signaling Cipher Suite Value (SCSV) -Funktion in der Hello-Nachricht des Clients angekündigt wird. Der Hexadezimalcode für Fallback SCSV ist 0x5600.
CLIENT.SSL.CLIENT_HELLO.IS_SESSION_TICKET 有真正的zurück, wenn in der Client-Hallo-Nachricht eine Sitzungsticket-Erweiterung mit einer Länge ungleich Null angekündigt wird.
CLIENT.SSL.CLIENT_HELLO.LENGTH Länge, die im Hello-Nachrichtenheader des Clients empfangen wurde.
CLIENT.SSL.CLIENT_HELLO.SNI 有窝Servernamen选择,der der Erweiterung “Servername” der Hello-Nachricht des Clients empfangen wurde.
CLIENT.SSL.CLIENT_HELLO.ALPN.HAS_NEXTPROTOCOL 有真正的zurück, wenn das Anwendungsprotokoll in der Erweiterung ALPN, das in der Hello-Nachricht des Clients empfangen wurde, mit dem im Ausdruck angegebenen Protokoll übereinstimmt

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

Erweiterte Richtlinienausdrücke: SSL parsen