Citrix ADC

Integrierte SSL-Aktionen und benutzerdefinierte Aktionen

Wenn Sie nicht nur die integrierten Aktionen in Ihren Richtlinien benötigen, müssen Sie die Aktionen erstellen, bevor Sie die Richtlinien erstellen. Anschließend können Sie die Aktionen beim Erstellen der Richtlinien angeben. Die integrierten Aktionen sind von zwei Arten, Steueraktionen und Datenaktionen. Sie verwenden Steueraktionen in Steuerungsrichtlinien und Datenaktionen in Datenrichtlinien.

Die integrierten Steueraktionen sind:

  • DOCLIENTAUTH - Führen Sie die Clientzertifikatauthentifizierung durch.
  • NOCLIENTAUTH - Führen Sie keine Clientzertifikatauthentifizierung durch.

Die integrierten Datenaktionen sind:

  • RESET - Schließen Sie die Verbindung, indem Sie ein RST-Paket an den Client senden.
  • DROP - Alle Paket von dem Client fallen lassen. Die Verbindung bleibt offen, bis der Client sie schließt.
  • NOOP - Leiten Sie das Paket ohne Operation weiter.

Sie können benutzerdefinierte Datenaktionen erstellen. Wenn Sie die Clientauthentifizierung aktivieren, können Sie eine SSL-Aktion erstellen, um Clientzertifikatdaten in den Anforderungs-Header einzufügen, bevor Sie die Anforderung an den Webserver weiterleiten.

Wenn eine Richtlinienbewertung zu einem undefinierten Zustand führt, wird eine UNDEF-Aktion ausgeführt. Für eine Datenrichtlinie oder eine Steuerungsrichtlinie können Sie RESET, DROP oder NOOP als UNDEF -Aktion angeben. Für eine Steuerungsrichtlinie haben Sie auch die Möglichkeit, DOCLIENTAUTH oder NOCLIENTAUTH anzugeben.

Beispiele für integrierte Aktionen in einer Richtlinie

Wenn der Client im folgenden Beispiel eine andere Verschlüsselung als eine EXPORT-Kategorieverschlüsselung sendet, fordert die Citrix ADC Appliance die Clientauthentifizierung an. Der Client muss ein gültiges Zertifikat für eine erfolgreiche Transaktion bereitstellen.

add ssl policy pol1 -rule CLIENT.SSL.CIPHER_EXPORTABLE.NOT -reqAction DOCLIENTAUTH

In den folgenden Beispielen wird davon ausgegangen, dass die Clientauthentifizierung aktiviert ist.

Wenn die vom Benutzer bereitgestellte Version im Zertifikat mit der Version in der Richtlinie übereinstimmt, wird keine Aktion ausgeführt und das Paket wird weitergeleitet:

add ssl policy pol1 -rule CLIENT.SSL.CLIENT_CERT.VERSION.EQ(2) -reqAction NOOP

Wenn die Version im vom Benutzer bereitgestellten Zertifikat mit der Version in der Richtlinie übereinstimmt, wird die Verbindung gelöscht:

add ssl policy pol1 -rule CLIENT.SSL.CLIENT_CERT.VERSION.EQ(2) -reqAction DROP

Wenn die vom Benutzer bereitgestellte Version im Zertifikat mit der Version in der Richtlinie übereinstimmt, wird die Verbindung zurückgesetzt:

add ssl policy pol1 -rule CLIENT.SSL.CLIENT_CERT.VERSION.EQ(2) -reqAction RESET

Clientzertifikatüberprüfung mit richtlinienbasierter Clientauthentifizierung

Sie können die Clientzertifikatsüberprüfung auf obligatorisch oder Option festlegen, wenn Sie richtlinienbasierte Clientauthentifizierung konfiguriert haben. Der Standardwert ist obligatorisch.

Festlegen der Clientzertifikatüberprüfung mit der CLI auf optional

Geben Sie an der Eingabeaufforderung Folgendes ein:

add ssl action <name> ((-clientAuth ( DOCLIENTAUTH | NOCLIENTAUTH ) [-clientCertVerification ( Mandatory | Optional )]

Beispiel:

add ssl action sslact -clientauth DOCLIENTAUTH -clientcertverification OPTIONAL

Festlegen der Clientzertifikatsüberprüfung auf optional mit der GUI

  1. Navigieren Sie zu Verkehrsverwaltung > SSL > Richtlinien.

  2. Klicken Sie auf der Registerkarte SSL-Aktionen auf Hinzufügen.

  3. Geben Sie einen Namen an, und wählen Sie in der Liste Clientzertifikatüberprüfung die Option Optional aus.

Benutzerdefinierte SSL-Aktionen

Zusätzlich zu integrierten Aktionen können Sie je nach Bereitstellung auch andere SSL-Aktionen konfigurieren. Diese Aktionen werden als benutzerdefinierte Aktionen bezeichnet.

Konfigurieren einer benutzerdefinierten SSL-Aktion mit der CLI

Geben Sie an der Eingabeaufforderung die folgenden Befehle ein, um eine Aktion zu konfigurieren und die Konfiguration zu überprüfen:

add SSL action <name> -clientAuth(DOCLIENTAUTH | NOCLIENTAUTH) -clientCert (ENABLED | DISABLED) certHeader <string> -clientHeader <string> -clientCertSerialNumber (ENABLED | DISABLED) -certSerialHeader <string> -clientCertSubject (ENABLED | DISABLED) -certSubjectHeader <string> -clientCertHash (ENABLED | DISABLED) -certHashHeader <string> -clientCertIssuer (ENABLED | DISABLED) -certIssuerHeader <string> -sessionID (ENABLED | DISABLED) -sessionIDheader <string> -cipher (ENABLED | DISABLED) -cipherHeader <string> -clientCertNotBefore (ENABLED | DISABLED) -certNotBeforeHeader <string> -clientCertNotAfter (ENABLED | DISABLED) -certNotAfterHeader <string> -OWASupport (ENABLED | DISABLED)
show ssl action [<name>]

Beispiel:

add ssl action Action-SSL-ClientCert -clientCert ENABLED -certHeader "X-Client-Cert"
show ssl action Action-SSL-ClientCert

1)      Name: Action-SSL-ClientCert
        Data Insertion Action:
        Cert Header: ENABLED            Cert Tag: X-Client-Cert
Done

Konfigurieren einer benutzerdefinierten SSL-Aktion mit der GUI

Navigieren Sie zu Verkehrsverwaltung > SSL > Richtlinien, und klicken Sie auf der Registerkarte Aktionen auf Hinzufügen.

Konfigurieren einer SSL-Aktion zum Weiterleiten des Clientdatenverkehrs an einen anderen virtuellen Server

Administratoren können eine SSL-Aktion konfigurieren, um den auf einem virtuellen SSL-Server empfangenen Clientdatenverkehr an einen anderen virtuellen Server weiterzuleiten, um SSL-Abladung zu vermeiden. Oder zum Beenden der Verbindung auf der ADC-Appliance. Dieser virtuelle Server kann vom Typ SSL, TCP oder SSL_BRIDGE sein. Beispielsweise können Administratoren wählen, die Anforderung an einen anderen virtuellen Server weiterzuleiten, anstatt die Verbindung zu beenden, wenn einer der folgenden Fälle:

  • Die Appliance verfügt über kein Zertifikat.
  • Die Appliance unterstützt keine bestimmte Chiffre.

Um dies zu erreichen, wird ein neuer Bindepunkt ‘CLIENTHELLO_REQ’ hinzugefügt, um den Client-Datenverkehr zu bewerten, wenn ein Client-Hallo empfangen wird. Wenn die Richtlinie, die an den virtuellen Server gebunden ist, der Clientdatenverkehr empfängt, nach der Analyse des Client-Hallo auf true ausgewertet wird, wird der Datenverkehr an einen anderen virtuellen Server weitergeleitet. Wenn dieser virtuelle Server vom Typ SSL ist, führt er den Handshake aus. Wenn dieser virtuelle Server vom Typ TCP oder SSL_BRIDGE ist, führt der Backend-Server den Handshake durch.

In Release 12.1-49.x werden nur die Vorwärts- und Reset-Aktionen für den CLIENTHELLO_REQ-Bindpunkt unterstützt. Die folgenden Ausdruckspräfixe sind verfügbar:

  • CLIENT.SSL.CLIENT_HELLO.CIPHERS.HAS_HEXCODE
  • CLIENT.SSL.CLIENT_HELLO.CLIENT_VERSION
  • CLIENT.SSL.CLIENT_HELLO.IS_RENEGOTIATE
  • CLIENT.SSL.CLIENT_HELLO.IS_REUSE
  • CLIENT.SSL.CLIENT_HELLO.IS_SCSV
  • CLIENT.SSL.CLIENT_HELLO.IS_SESSION_TICKET
  • CLIENT.SSL.CLIENT_HELLO.LENGTH
  • CLIENT.SSL.CLIENT_HELLO.SNI
  • CLIENT.SSL.CLIENT_HELLO.ALPN.HAS_NEXTPROTOCOL (from release 13.0 build 61.x)

Eine Beschreibung dieser Präfixe finden Sie unter Erweiterte Richtlinienausdrücke: SSL analysieren.

Dem Befehl add SSL action wird ein Parameter forward hinzugefügt, und dem Befehl bind ssl vserver wird ein neuer Bindpunkt CLIENTHELLO_REQ hinzugefügt.

Konfiguration über die CLI

Geben Sie an der Eingabeaufforderung Folgendes ein:

add ssl action <name> -forward <virtual server name>

add ssl policy <name> -rule <expression> -action <string>

bind ssl vserver <vServerName> -policyName <string> -priority <positive_integer> -type <type>

BEISPIEL:

add ssl action act1 -forward v2

add ssl policy pol1 -rule client.ssl.client_hello.ciphers.has_hexcode(0x002f) -action act1

bind ssl vserver v1 -policyName pol1 -priority 1 -type CLIENTHELLO_REQ

Konfiguration über die GUI

Navigieren Sie zu Verkehrsverwaltung > SSL > Richtlinien.

SSL-Aktion erstellen:

  1. Klicken Sie unter SSL-Aktionen auf Hinzufügen.
  2. Geben Sie unter SSL-Aktion erstellen einen Namen für die Aktion an.
  3. Wählen Sie unter Virtueller Server Vorwärtsaktion einen vorhandenen virtuellen Server aus, oder fügen Sie einen neuen virtuellen Server hinzu, an den der Datenverkehr weitergeleitet werden soll.
  4. Legen Sie optional andere Parameter fest.
  5. Klicken Sie auf Erstellen.

SSL-Richtlinie erstellen:

  1. Klicken Sie in SSL-Richtlinien auf Hinzufügen.
  2. Geben Sie unter SSL-Richtlinie erstellen einen Namen für die Richtlinie an.
  3. Wählen Sie unter Aktiondie Aktion aus, die Sie zuvor erstellt haben.
  4. Geben Sie im Ausdruckseditor die auszuwertende Regel ein.
  5. Klicken Sie auf Erstellen.

Erstellen oder Hinzufügen eines virtuellen Servers und Bind-Richtlinie:

  1. Navigieren Sie zu Verkehrsverwaltung > Lastenausgleich > Virtuelle Server.
  2. Fügen Sie einen virtuellen Server hinzu oder wählen Sie diesen aus.
  3. Klicken Sie unter Erweiterte Einstellungen auf SSL-Richtlinien.
  4. Klicken Sie in den Abschnitt SSL-Richtlinie.
  5. Wählen Sie unter Richtlinie auswählen die Richtlinie aus, die Sie zuvor erstellt haben.
  6. Geben Sie unter Richtlinienbindung eine Priorität für die Richtlinie an.
  7. Wählen Sie unter Typ die Option CLIENTHELLO_REQ aus.
  8. Klicken Sie auf Bind.
  9. Klicken Sie auf Fertig.

Die End-to-End-Konfiguration für die beliebtesten Anwendungsfälle finden Sie in den folgenden Themen:

SSL-Aktion zur selektiven Auswahl von Zertifizierungsstellen basierend auf SNI für die Clientauthentifizierung

Sie können nur die Liste der Zertifizierungsstellen basierend auf SNI (Domäne) in der Clientzertifikatanforderung senden und nicht die Liste aller Zertifizierungsstellen, die an einen virtuellen SSL-Server gebunden sind. Wenn beispielsweise ein Client-Hallo empfangen wird, werden nur die Zertifizierungsstellenzertifikate gesendet, die auf dem SSL-Richtlinienausdruck basieren (z. B. SNI). Um einen bestimmten Satz von Zertifikaten zu senden, müssen Sie eine Zertifizierungsstellenzertifikatsgruppe erstellen. Binden Sie diese Gruppe dann an eine SSL-Aktion, und binden Sie die Aktion an eine SSL-Richtlinie. Wenn die Richtlinie, die an den virtuellen Server gebunden ist, der den Clientdatenverkehr empfängt, nach der Analyse des Client-Hallo als true ausgewertet wird, wird im Clientanforderungszertifikat nur eine bestimmte Zertifizierungsstellengruppe gesendet.

Zuvor mussten Sie Zertifizierungsstellenzertifikate an einen virtuellen SSL-Server binden. Mit dieser Erweiterung können Sie CA-Zertifikatgruppen einfach hinzufügen und einer SSL-Aktion zuordnen.

Hinweis: Aktivieren Sie die Clientauthentifizierung und SNI auf dem virtuellen SSL-Server. Binden Sie die richtigen SNI-Zertifikate an den virtuellen Server.

Gehen Sie wie folgt vor:

  1. Fügen Sie eine Zertifizierungsstellenzertifikatsgruppe hinzu.

  2. Fügen Sie Zertifikatschlüsselpaare hinzu.

  3. Binden Sie die Zertifikatschlüssel-Paare an diese Gruppe.

  4. Fügen Sie eine SSL-Aktion hinzu.

  5. Fügen Sie eine SSL-Richtlinie hinzu. Geben Sie die Aktion in der Richtlinie an.

  6. Binden Sie die Richtlinie an einen virtuellen SSL-Server. Geben Sie den Bindepunkt als CLIENTHELLO_REQ an.

Konfiguration über die CLI

Geben Sie an der Eingabeaufforderung die folgenden Befehle in einer Sequenz ein:

add ssl caCertGroup <caCertGroupName>
add ssl certkey <certkey_name> -cert <cert> -key <key>
bind ssl caCertGroup <caCertGroupName> <certkey_name>
add ssl action <name> -caCertGrpName <string>
add ssl policy <name> -rule <expression> -action <string>
bind ssl vserver <vServerName> -policyName <string> -priority <positive_integer> -type CLIENTHELLO_REQ

Beispiel:

add ssl cacertGroup ca_cert_group

add ssl certkey ca_certkey1 -cert cacert1 -key cakey1
add ssl certkey ca_certkey2 -cert cacert2 -key cakey2
add ssl certkey snicert -cert snicert -key snikey

bind ssl cacertGroup ca_cert_group ca_certkey1
bind ssl caCertGroup ca_cert_group ca_certkey2
sh ssl caCertGroup ca_cert_group

CA GROUP NAME:     ca_cert_group
ACTIONS REFERRING: 1

1) CertKey Name: ca_certkey1   CA Certificate   CRLCheck: Optional   CA_Name Sent
2) CertKey Name: ca_certkey2   CA Certificate   CRLCheck: Optional   CA_Name Sent
add ssl action pick_ca_group -cacertGrpName ca_cert_group
sh ssl action pick_ca_group
1) Name: sniaction
   Type: Data Insertion
   PickCaCertGroup: ca_cert_group
   Hits: 0
   Undef Hits: 0
   Action Reference Count: 1
add ssl policy snipolicy -rule client.ssl.client_hello.sni.contains("abc") -action pick_ca_group
bind ssl vserver v_SSL -policyName snipolicy -type CLIENTHELLO_REQ -priority 10
sh ssl policy snipolicy
    Name: pol1
    Rule: client.ssl.client_hello.sni.contains("abc")
    Action: pick_ca_group
    UndefAction: Use Global
    Hits: 0
    Undef Hits: 0


    Policy is bound to following entities
1)  Bound to: CLIENTHELLO_REQ VSERVER v_SSL
    Priority: 10
set ssl vserver v_SSL -clientauth ENABLED -SNIEnable ENABLED
bind ssl vserver v_SSL -certkeyName snicert -sniCert
sh ssl vserver v_SSL

    Advanced SSL configuration for VServer v_SSL:
    DH: DISABLED
    DH Private-Key Exponent Size Limit: DISABLED   Ephemeral RSA: ENABLED   Refresh Count: 0
    Session Reuse: ENABLED   Timeout: 120 seconds
    Cipher Redirect: DISABLED
    SSLv2 Redirect: DISABLED
    ClearText Port: 0
    Client Auth: ENABLED   Client Cert Required: Mandatory
    SSL Redirect: DISABLED
    Non FIPS Ciphers: DISABLED
    SNI: ENABLED
    OCSP Stapling: DISABLED
    HSTS: DISABLED
    HSTS IncludeSubDomains: NO
    HSTS Max-Age: 0
    SSLv2: DISABLED  SSLv3: ENABLED  TLSv1.0: ENABLED  TLSv1.1: ENABLED  TLSv1.2: ENABLED  TLSv1.3: DISABLED
    Push Encryption Trigger: Always
    Send Close-Notify: YES
    Strict Sig-Digest Check: DISABLED
    Zero RTT Early Data: DISABLED
    DHE Key Exchange With PSK: NO
    Tickets Per Authentication Context: 1

    ECC Curve: P_256, P_384, P_224, P_521

1)  CertKey Name: snicert   Server Certificate for SNI


    Data policy
1)  Policy Name: snipolicy  Priority: 10



1)  Cipher Name: DEFAULT
    Description: Default cipher list with encryption strength >= 128bit

Konfiguration über die GUI

Erstellen Sie Zertifizierungsstellenzertifikatsgruppe und binden Sie Zertifikate an die Gruppe:

  1. Navigieren Sie zu Traffic Management > SSL > CA Certificate Group.
  2. Klicken Sie auf Hinzufügen, und geben Sie einen Namen für die Gruppe an.
  3. Klicken Sie auf Erstellen.
  4. Wählen Sie die Zertifizierungsstellenzertifikatsgruppe aus, und klicken Sie dann auf Bindungen anzeigen .
  5. Klicken Sie auf Bind.
  6. Wählen Sie auf der Seite CA-Zertifikatbindung ein vorhandenes Zertifikat aus, oder klicken Sie auf Hinzufügen, um ein neues Zertifikat hinzuzufügen.
  7. Klicken Sie auf Auswählen und dann auf Binden .
  8. Wiederholen Sie die Schritte 5 bis 7, um ein anderes Zertifikat zu binden.
  9. Klicken Sie auf Schließen.

Navigieren Sie zu Verkehrsverwaltung > SSL > Richtlinien.

SSL-Aktion erstellen:

  1. Klicken Sie unter SSL-Aktionen auf Hinzufügen.
  2. Geben Sie unter SSL-Aktion erstellen einen Namen für die Aktion an.
  3. Wählen Sie unter Virtueller Server Vorwärtsaktion einen vorhandenen virtuellen Server aus, oder fügen Sie einen virtuellen Server hinzu, an den der Datenverkehr weitergeleitet werden soll.
  4. Legen Sie optional andere Parameter fest.
  5. Klicken Sie auf Erstellen.

SSL-Richtlinie erstellen:

  1. Klicken Sie in SSL-Richtlinien auf Hinzufügen.
  2. Geben Sie unter SSL-Richtlinie erstellen einen Namen für die Richtlinie an.
  3. Wählen Sie unter Aktiondie zuvor erstellte Aktion aus.
  4. Geben Sie im Ausdruckseditor die auszuwertende Regel ein.
  5. Klicken Sie auf Erstellen.

Erstellen oder Hinzufügen eines virtuellen Servers und Bind-Richtlinie:

  1. Navigieren Sie zu Verkehrsverwaltung > Lastenausgleich > Virtuelle Server.
  2. Fügen Sie einen virtuellen Server hinzu oder wählen Sie diesen aus.
  3. Klicken Sie unter Erweiterte Einstellungen auf SSL-Richtlinien.
  4. Klicken Sie in den Abschnitt SSL-Richtlinie.
  5. Wählen Sie unter Richtlinie auswählen die Richtlinie aus, die Sie zuvor erstellt haben.
  6. Geben Sie unter Richtlinienbindung eine Priorität für die Richtlinie an.
  7. Wählen Sie unter Typ die Option CLIENTHELLO_REQ aus.
  8. Klicken Sie auf Bind.
  9. Klicken Sie auf Fertig.

Aufheben der Bindung einer Zertifizierungsstellenzertifikatsgruppe mit der GUI

  1. Navigieren Sie zu Traffic Management > SSL > CA Certificate Group.
  2. Wählen Sie eine Zertifikatgruppe aus, und klicken Sie auf Bindungen anzeigen.
  3. Wählen Sie das Zertifikat aus, das aus der Gruppe entfernt werden soll, und klicken Sie auf Binden aufheben.
  4. Wenn Sie zur Bestätigung aufgefordert werden, klicken Sie auf **Ja••.
  5. Klicken Sie auf Schließen.

Entfernen einer Zertifizierungsstellenzertifikatsgruppe mit der GUI

  1. Navigieren Sie zu Traffic Management > SSL > CA Certificate Group.
  2. Wählen Sie eine Zertifikatgruppe aus, und klicken Sie auf Löschen.
  3. Wenn Sie zur Bestätigung aufgefordert werden, klicken Sie auf Ja.