高度なポリシー式:SSL の解析
SSL 証明書の解析
add cs policy p1 -rule "client.ssl.cipher_bits.le(40)"
add cs policy p2 -rule "client.ssl.client_cert exists"
add cs policy p2 -rule "client.ssl.client_cert exists && client.ssl.client_cert.days_to_expire.ge(1)"
テキストベースの SSL および証明書データのプレフィックス
| 前 | 説明 |
|---|---|
| CLIENT.SSL.CLIENT_CERT | 現在の SSL トランザクションの SSL クライアント証明書を返します。 |
| CLIENT.SSL.CLIENT_CERT.TO_PEM | SSL クライアント証明書をバイナリ形式で返します。 |
| CLIENT.SSL.CIPHER_EXPORTABLE | SSL 暗号暗号がエクスポート可能な場合は、ブール型 TRUE を返します。 |
| CLIENT.SSL.CIPHER_NAME | SSL 接続から呼び出された場合は SSL 暗号の名前を返し、非 SSL 接続から呼び出された場合は NULL 文字列を返します。 |
| CLIENT.SSL.IS_SSL | 現在の接続が SSL ベースの場合に TRUE を返します。 |
SSL 証明書の数値データのプレフィックス
| 前 | 説明 |
|---|---|
| CLIENT.SSL.CLIENT_CERT.DAYS_TO_EXPIRE | 証明書が有効である日数を返します。期限切れの証明書の場合は-1 を返します。 |
| CLIENT.SSL.CLIENT_CERT.PK_SIZE | 証明書で使用されている公開キーのサイズを返します。 |
| CLIENT.SSL.CLIENT_CERT.VERSION | 証明書のバージョン番号を返します。接続が SSL ベースでない場合は、ゼロ (0) を返します。 |
| CLIENT.SSL.CIPHER_BITS | 暗号化キーのビット数を返します。接続が SSL ベースでない場合は 0 を返します。 |
| CLIENT.SSL.VERSION | 次のように、SSL プロトコルのバージョンを表す数値を返します。0。トランザクションは SSL ベースではありません。; 0x002。トランザクションは SSLv2 です。トランザクションは SSLv3 です。0x301。トランザクションは TLSv1 です。トランザクションは TLS 1.1 です。トランザクションは TLS 1.2 です。0x304 です。トランザクションは TLS 1.3 です。 |
SSL 証明書の式
| SSL 証明書の操作 | 説明 |
|---|---|
<certificate>.EXISTS |
クライアントに SSL 証明書がある場合は、ブール型 TRUE を返します。 |
<certificate>.ISSUER |
証明書内の発行者の識別名 (DN) を名前/値リストとして返します。等号 (「=」) は名前と値の区切り文字で、スラッシュ (「/」) は名前と値のペアを区切る区切り文字です。返される DN の例を次に示します。 /C=US/O=myCompany/OU=www.mycompany.com/CN=www.mycompany.com/emailAddress=myuserid@mycompany.com |
<certificate>.ISSUER. IGNORE_EMPTY_ELEMENTS |
Issuer を返し、名前/値リストの空の要素を無視します。たとえば、Cert-Issuer: /c=in/st=kar//l=bangelore //o=mycompany/ou=sales/ /emailAddress=myuserid@mycompany.comを考えてみましょう。次の Rewrite アクションは、前の発行者の定義に基づいて 6 のカウントを返します。sh rewrite action insert_ssl_header Name: insert_ssl Operation: insert_http_header Target:Cert-Issuer Value:CLIENT.SSL.CLIENT_CERT.ISSUER.COUNT。ただし、値を次のように変更すると、返されるカウントは 9 です。CLIENT.SSL.CLIENT_CERT.ISSUER.IGNORE_EMPTY_ELEMENTS.COUNT |
SSL クライアントを解析する
| 前 | 説明 |
|---|---|
| CLIENT.SSL.CLIENT_HELLO.CIPHERS.HAS_HEXCODE | 式で指定された 16 進コードを、クライアントの hello メッセージで受信した暗号スイートの 16 進コードと一致させます。 |
| CLIENT.SSL.CLIENT_HELLO.CLIENT_VERSION | クライアントの hello メッセージヘッダーで受信したバージョン。 |
| CLIENT.SSL.CLIENT_HELLO.IS_RENEGOTIATE | クライアントまたはサーバーがセッションの再ネゴシエーションを開始する場合は true を返します。 |
| CLIENT.SSL.CLIENT_HELLO.IS_REUSE | アプライアンスが、クライアント hello メッセージで受信した 0 以外のセッション ID に基づいて SSL セッションを再利用する場合、true を返します。 |
| CLIENT.SSL.CLIENT_HELLO.IS_SCSV | シグナリング暗号スイート値(SCSV)機能がクライアントの hello メッセージでアドバタイズされている場合は true を返します。フォールバック SCSV の 16 進コードは 0x5600 です。 |
| CLIENT.SSL.CLIENT_HELLO.IS_SESSION_TICKET | 0 以外の長さのセッションチケット拡張が、クライアント hello メッセージでアドバタイズされている場合は true を返します。 |
| CLIENT.SSL.CLIENT_HELLO.LENGTH | クライアントの hello メッセージヘッダーで受信された長さ。 |
| CLIENT.SSL.CLIENT_HELLO.SNI | クライアント hello メッセージのサーバ名拡張子で受信したサーバ名を返します。 |
| CLIENT.SSL.CLIENT_HELLO.ALPN.HAS_NEXTPROTOCOL | クライアント hello メッセージで受信された ALPN 拡張内のアプリケーションプロトコルが、式で指定されたプロトコルと一致する場合は true を返します。 |