Name

ssl — format of ssl component configuration

DESCRIPTION

General syntax rules of Kernun Firewall configuration files are described in configuration(7). This man page describes types, sections and items specific for the ssl component configuration.

Repeatable sections/items are marked by the '*' before section/item name.

TYPES

Configuration directives have attributes of several value-types. For the basic types description, see configuration(7).

Enumeration is a list of words (names) representing integer values. Some enumerations accept both names and direct integer values; in this case, enumeration description contains values for every name (in parenthesis next to name). For other enumerations, using of names is obligatory.

The following enumerations are used in ssl configuration directives:

enabling (see common(5))

yes-no (see common(5))

ssl-ver (name-usage obligatory)

SSL/TLS protocol versions.

SSLv3

SSL version 3

TLSv1

TLS version 1

TLSv1-1

TLS version 1.1

TLSv1-2

TLS version 1.2

extension-op (name-usage obligatory)

Certificate Extensions Operations.

keep, remove

veri-fail-action (name-usage obligatory)

Certificate verification failure actions.

ignore

Verification status is absolutely ignored. UNRECOMMENDED OPTION.

pass

Verification status is ignored, the certificate used on the client side is signed by a special, untrusted CA, however. Thus, the final decision is passed to the client.

error

The client side connection is established with fully trusted certificate and then the proxy sends a user readable error message.

fail

The connection establishing fails.

auth-cert-type (name-usage obligatory)

Authorized certificate store type.

kernun-dist

Certificate list from Kernun distribution

file

Own certificate list in PEM file

dir

Own directory with PEM certificate files

distrusted-cert-type (name-usage obligatory)

Distrusted (blacklist) certificate store type.

kernun-dist

Certificate list from Kernun distribution

file

Own certificate list in PEM file

none

No distrusted certificates are used

ITEMS AND SECTIONS

Configuration of ssl library component consists of following prototypes:


  ssl-session-cache { ... }
* fake-cert name { ... }
* ssl-params name { ... }
* ssl-cert-match ... ;
    

Description:

ssl-session-cache {


  capacity ... ;
  dir ... ;
  lock ... ;
}

        

Cache of active SSL/TLS sessions usable for session resumption.

Constraints:

Item DIR (session cache directory) must be set.

Items & subsections:

capacity [server [client]];

Maximum number of sessions in the cache.

server (type: uint16, optional, default: 0)

sessions in which proxy on server side

client (type: uint16, optional, default: 0)

sessions in which proxy on client side

dir val;

Directory used to store files with session information.

val (type: str)

lock [path];

Lock for exclusive access to the cache.

path (type: str, optional, default: <NULL>)

If set to directory, file in that directory is created with name PREFIX.PID.XXXXXX, where PREFIX is a string defined by the proxy, PID is the proxy parent process ID and X is a random suffix. If not set, directory /tmp is assumed. Automatic generation of lock file name is strongly recommended, because each lock must have a unique name.

[End of section ssl-session-cache description.]

fake-cert name {


  key ... ;
  auth-ca ... ;
  fail-ca ... ;
* extension ... ;
  purge ... ;
}

        

Server certificate faking parameters.

This section defines parameters of certificates generated by proxies when SSL inspection is turned on. The new certificate contains a copy of important attributes from the original server certificate, it is signed by a trusted Kernun CA and stored into a certificate cache (file with name /data/fake-cert/<SECTION>/<VER><FINGERPRINT>.<NUM> where:

- <SECTION> is the FAKE-CERT section name

- <FINGERPRINT> is the certificate fingerprint

- <VER> is certificate verification status

- <NUM> is certificate distinguishing number.

The verification status reflects result of the original certificate verification - for trusted ones, the 'C' is used, while otherwise the 'F' is used.

Constraints:

Private key used in faked certificates (KEY) must be set.

Trusted certification authority (AUTH-CA) must be set.

Items & subsections:

key private-key;

Private key used in faked certificates.

private-key (type: name of shared-file, see common(5))

auth-ca private-key certificate;

Private key and certificate of trusted CA.

This certificate and key are used as issuer identity for new certificates made from properly verified server ones.

private-key (type: name of shared-file, see common(5))

certificate (type: name of shared-file, see common(5))

fail-ca private-key certificate;

Private key and certificate of untrusted CA.

This certificate and key are used as issuer identity for new certificates made from untrusted server ones.

If this item is not used, faking attempts for untrusted certificates leads to the fatal error.

private-key (type: name of shared-file, see common(5))

certificate (type: name of shared-file, see common(5))

extension op [names];

Faked certificate Extensions handling.

The new certificate contains all attributes of the original certificate, by default. Copying of some X.509 Extensions could cause problem, so handling of them can be managed by this item. Namely, following Extensions are removed by default, if not stated otherwise in the configuration:

- X509v3 Authority Key Identifier

- Authority Information Access.

op (type: extension-op)

names (type: str-set, optional, default: *)

purge [days];

days (type: uint16, optional, default: 7)

Day limit - certificates unaccessed for this time are purged.

[End of section fake-cert description.]

ssl-params name {


  versions ... ;
  ciphers ... ;
  tcp-eof ... ;
  id ... ;
* auth-cert ... ;
  distrusted-certs ... ;
  dont-check-crl ... ;
* crl ... ;
  verify-peer ... ;
  cache-timeout ... ;
  use-ticket ... ;
  enable-renegotiation ... ;
  fake-cert ... ;
  prefer_server_ciphers ... ;
  enable-ecdh ... ;
}

        

SSL parameters.

Constraints:

ID and FAKE-CERT are mutually exclusive.

Items & subsections:

versions ver;

SSL/TLS protocol versions supported.

If omitted, only TLSv1.2 protocol is supported.

ver (type: ssl-ver-set)

ciphers [val];

List of permitted ciphers, see ciphers(1).

val (type: str, optional, default: "ALL:!MEDIUM:!LOW:!RC4:!DES:!3DES:!SEED:!IDEA:!NULL:!eNULL:!aNULL:!ADH")

tcp-eof [val];

Treat closing TCP connection without previous close notify as correct session termination and not a protocol violation.

val (type: yes-no, optional, default: yes)

id private-key certificate;

Private key and certificate.

The certificate should also contain certificates of intermediate certification authorities, if there are any. It should not contain the certificate of the root certification authority however.

private-key (type: name of shared-file, see common(5))

certificate (type: name of shared-file, see common(5))

auth-cert kernun-dist;

auth-cert file file;

auth-cert dir dir;

Certificates of trusted certification authorities.

This item should usually contain only certificates of root certification authorities.

<branching element> (type: auth-cert-type)

Certificate source type.

file (type: name of shared-file, see common(5))

file with certificates

dir (type: name of shared-dir, see common(5))

directory with hashed certificate files

distrusted-certs kernun-dist;

distrusted-certs file file;

distrusted-certs none;

Distrusted certificates. Certificates listed in this item are considered as a "blacklist" when verifying the certificate. If any of the certificates that build up the certificate chain is listed in DISTRUSTED-CERTIFICATES, the verification is evaluated false.

<branching element> (type: distrusted-cert-type)

Certificate source type.

file (type: name of shared-file, see common(5))

file with distrusted certificates

dont-check-crl;

Do not check CRL validity when verifying certificates.

crl [missing] file;

Certification revocation list (loaded once during proxy startup).

missing (type: key, optional)

CRL may be missing

file (type: name of shared-file, see common(5))

verify-peer disable;

verify-peer [enable] [allow-no-cert];

Peer verification request.

SSL/TLS handshake fails if peer does not send a certificate or it sends a certificate that cannot be verified. Client does not send a certificate until it is requested by VERIFY-PEER. Omitting this item has the same meaning as using with the DISABLE keyword.

<branching element> (type: enabling, optional, default: enable)

allow-no-cert (type: key, optional)

Allow clients which do not present a certificate.

cache-timeout [sec];

Maximum time since a session creation when the session can be resumed. After this time, no new connections may be established in the same session, although the existing connection can continue. Setting this to zero disables session resumption.

sec (type: uint32, optional, default: 0)

use-ticket [val];

Normally clients and servers will, where possible, transparently make use of RFC4507bis tickets for stateless session resumption. If this option is set to 0, this functionality is disabled and tickets will not be used by client or server.

val (type: yes-no, optional, default: yes)

enable-renegotiation;

Permits session renegotiation. Do not enable this unless you understand all related negative security consequences!

fake-cert faking action;

Server certificate faking parameters.

If this section is used, the proxy generates a faked certificate of each server for the client connection, instead of using a fixed one.

faking (type: name of fake-cert, see above)

Faking parameters

action (type: veri-fail-action)

Reaction when server certificate verification fails.

prefer_server_ciphers [val];

Set on servers to choose the cipher according to the server's preferences

val (type: yes-no, optional, default: yes)

enable-ecdh [val];

Enable or disable ephemeral ECDH

val (type: yes-no, optional, default: yes)

[End of section ssl-params description.]

ssl-cert-match [subject subject] [issuer issuer];

Matching values from SSL certificate. If not used, peer need not present a cerficate or the client certificate need not be verified correctly. If used, peer must send a valid certificate and its content must match.

subject subject (type: str-set, optional, default: *)

acceptable certificate subjects

issuer issuer (type: str-set, optional, default: *)

acceptable certificate issuers

SEE ALSO

configuration(7), ciphers(1), common(5)