Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
HITCH.CONF(5)							   HITCH.CONF(5)

NAME
     Hitch.conf - Configuration file for Hitch

DESCRIPTION
     hitch.conf  is  the configuration file for hitch(8). The configuration file
     is loaded using the Hitch option --config=, and  can  thus  have  different
     names and can exist in different locations.

     Almost  all  options available in hitch.conf can be specified or overridden
     in the command line of Hitch, as described in hitch(8).

     The Hitch configuration file consists of a series	of  option  assignments.
     Some  options (pem-file, frontend) can be be set several times, and the ef-
     fect is that multiple certificate files and "listening frontends"	are  de-
     fined. Other options can only be assigned once.

     The  hash	mark, or pound sign ("#"), is used as a "comment" character. You
     can use it to annotate your config file. All text after the comment charac-
     ter to the end of the line is ignored. Empty lines are ignored.

OPTIONS
     Options can either be in the top level of the  configuration  file  (global
     scope),  or  inside  a frontend block. Options inside a frontend block only
     affect the frontend, while options in the top level sets defaults	for  all
     frontends.

     Unless otherwise noted below, options can only be used in the top level.

   alpn-protos = <protocol-list>
     Comma  separated  list  of  protocols  supported by the backend in a quoted
     string. The list is used select protocols when  the  client  supports  Next
     Protocol	Negotiation  (NPN)  or	Application-Layer  Protocol  Negotiation
     (ALPN). If Hitch is compiled against a OpenSSL version that does  not  sup-
     port ALPN, only NPN will be used to select a protocol.

     The  result of the NPN/ALPN negotiation will be communicated to the backend
     if and only if write-proxy-v2 or proxy-proxy is used. For	HTTP/2	to  work
     with modern browsers, ALPN negotiation is required.

   backend = ...
     The  endpoint  Hitch connects to when receiving a connection. Only a single
     backend is supported.

     This is either specified as "[HOST]:port" for IPv4/IPv6 endpoints:

	backend = "[localhost]:8080"

     Or it can be specified as a path to a UNIX domain socket:

	backend = "/path/to/sock"

     If the chroot setting is in effect, the UNIX domain socket path will be  at
     runtime  resolved	from  within  the chroot, and must be specified with the
     path it is accessible from within the chroot. I.e. for a /run/hitch  chroot
     and a /run/hitch/sock UNIX domain socket, configure the backend argument as
     /sock.

   backlog = <number>
     Listen backlog size

   chroot = <string>
     Chroot directory

   ciphers = ...
     List  of  ciphers	to use in the secure communication. Refer to the OpenSSL
     documentation for a complete list of supported ciphers.

     Each cipher in the list must be separated by a colon (:), in order of pref-
     erence. See ciphers(1) for further description of the format.

     If not specified, OpenSSL will allow all ciphers. System administrators are
     advised to either only support strong ciphers (as in the example  file  be-
     low) or to pay close attention to security advisories related OpenSSL's ci-
     phers.

     This option applies to TLSv1.2 and below. For TLSv1.3, see ciphersuites.

     This option is also available in frontend blocks.

   ciphersuites = <string>
     Specifies	available  ciphersuites for TLSv1.3. Similar to ciphers, entries
     must be separated by colon (:) and sorted in order of preference.

     This option is also available in frontend blocks.

   client-verify = required|optional|none
     Configures client certificate validation. The setting must be one of  none,
     required or optional.

     The  default  setting is client-verify = none, in which case Hitch will not
     send a certificate request to the client.

     If client-verify = require is configured, Hitch will  only  permit  connec-
     tions  that  present  a valid certificate. The certificate will be verified
     using the certificate provided in the client-verify-ca parameter.

     If optional, Hitch will send certificate requests, but still permit connec-
     tions that do not present one.

     For settings optional and required, we also require  that	the  client-ver-
     ify-ca is configured.

     This  option  is  also available in frontend blocks and pem-file blocks. If
     specified in a frontend block, the client verification  setting  will  only
     apply  to	the pem-file records for that particular frontend. This can also
     be further refined by using the option in a pem-file block, which	has  the
     effect of having it only apply to that particular pem-file record.

   client-verify-ca = <string>
     Specifies	a  file containing the certificates of the CAs that will be used
     to verify a client certificate.

     For multiple CAs, this file can be a concatenation  of  multiple  pem-files
     for the relevant certificate authorities.

     This option is also available in frontend blocks and in pem-file blocks.

   daemon = on|off
     Run as daemon. Default is off.

   frontend = ...
     This  specifies  the  port  and  interface (the listen endpoint) that Hitch
     binds to when listening for connections.  It  is  possible  define  several
     frontends, and Hitch will bind to several ports and/or several interfaces.

     If  "*" is used as the host, then Hitch will bind on all interfaces for the
     given port.

     A frontend can be specified either in a single line:

	frontend = "[HOST]:PORT[+CERT]"

     Or in a frontend block:

	frontend = {
	    host = "HOST"
	    port = "PORT"
	    <other frontend options>
	}

   group = <string>
     If given, Hitch will change to this group after binding to listen sockets.

   keepalive = <number>
     Number of seconds a TCP socket is kept alive

   backend-refresh = <number>
     Number of seconds between periodic backend IP lookups, 0 to  disable.   De-
     fault is 0.

   ocsp-dir = <string>
     Directory	where Hitch will store and read OCSP responses for stapling. De-
     fault is "/var/lib/hitch/".

     Directory must be readable and writable for the configured Hitch  user,  or
     automatic retrieval and updating of OCSP responses will not take place.

     If you have a manually pre-loaded OCSP staple, an alternative pem-file syn-
     tax can be used for stapling:

	pem-file = {
	    cert = "mycert.pem"
	    ocsp-resp-file = "ocsp-resp.der"
	}

   ocsp-connect-tmo = <number>
     OCSP fetch connect timeout.

     This does normally not need to be changed.

     Default is 4.0 seconds.

   ocsp-resp-tmo = <number>
     OCSP fetch response timeout.

     This does normally not need to be changed.

     Default is 10 seconds.

   ocsp-refresh-interval = <number>
     OCSP refresh interval.

     If  the  OCSP  response does not carry any refresh information, use this as
     the interval for refreshing.

     Default is 1800 seconds.

   ocsp-verify-staple = on|off
     If set, OCSP responses will be verified against the certificate  after  re-
     trieval.

     Default is off.

   pem-file = <string>
     Specify  a  SSL x509 certificate file. Server Name Indication (SNI) is sup-
     ported by using one certificate file per SNI name.

     A file suitable for Hitch is a concatenation of a private key and a  corre-
     sponding certificate or certificate chain.

     At  least one PEM file is needed for Hitch to start, but it can be supplied
     on the command line.

     Certificates are used in the order they are listed;  the  last  certificate
     listed will be used if none of the others match.

     In  the  event that we have multiple certificates that provide the same SNI
     string, an error will be logged. The last loaded certificate will	in  that
     case take precedence.

     For  partial  overlap in names, e.g. if one certificate provides "www.exam-
     ple.com" and another one "*.example.com", the most specific match will  al-
     ways take precedence at SNI lookup.

     This option is also available in a frontend declaration, to make a certifi-
     cate only available for a specific listen endpoint.

   private-key = <string>
     If  set, the private key is read from specified location, not from the cert
     file.

	pem-file = {
	    cert = "mycert.pem"
	    private-key = "myprivate.key"
	}

   pem-dir = <string>
     Specify a directory for loading x509 certificates.

     A fallback certificate for non-SNI clients may be specified by also includ-
     ing a separate pem-file definition.

     The files are processed in lexicographic  order.  In  the	absence  of  any
     pem-file definitions, the first file entry will be used as the fallback de-
     fault.

	pem-dir = "/etc/hitch/cert.d"

   pem-dir-glob = <string>
     Matching filter for filenames loaded from pem-dir.

     Default is none (match any).

	pem-dir-glob = "*.pem"

   prefer-server-ciphers = on|off
     Turns on or off enforcement of the cipher ordering set in Hitch.

     This option is also available in frontend blocks.

     Default is off.

   proxy-proxy = on|off
     Proxy  an	incoming  PROXY protocol header through to the backend. Supports
     both version 1 and 2 of the PROXY protocol.

     This option is mutually exclusive with option write-proxy-v2, write-ip  and
     write-proxy-v1.

     Default is off.

   log-level = <num>
     Log chattiness. 0=silence, 1=errors, 2=info/debug.

     This  setting  can also be changed at run-time by editing the configuration
     file followed by a reload (SIGHUP).

     Default is 0.

   quiet = on|off
     If quiet is turned on, only error messages will be shown. This  setting  is
     deprecated in favor of log-level.

   tls-protos = ...
     The  SSL/TLS  protocols  to  be  used.  This is an unquoted list of tokens.
     Available tokens are SSLv3, TLSv1.0, TLSv1.1, TLSv1.2 and TLSv1.3.

     The default is TLSv1.2 and TLSv1.3.

     There are two deprecated options, ssl= and tls=, that  also  select  proto-
     cols.  If	"ssl=on" is used, then all protocols are selected. This is known
     to be insecure, and is strongly discouraged. If "tls=on" is used, the three
     TLS protocol versions will be used. Turning on SSLv3  and	TLSv1.0  is  not
     recommended  - support for these protocols are only kept for backwards com-
     patibility.

     The availability of protocol versions depend on OpenSSL version and  system
     configuration.  In  particular  for  TLS 1.3, openssl 1.1.1 or later is re-
     quired.

     For supporting legacy protocol versions you may also need to lower the Min-
     Protocol	property    in	  your	  OpenSSL    configuration    (typically
     /etc/ssl/openssl.cnf).

     This option is also available in frontend blocks.

   ecdh-curve = <string>
     Sets  the	list of supported TLS curves. A special value of auto will leave
     it up to OpenSSL to automatically pick the most  appropriate  curve  for  a
     client.

	ecdh-curve = "X25519:prime256v1:secp384r1"

   sni-nomatch-abort = on|off
     Abort handshake when the client submits an unrecognized SNI server name.

     This option is also available in a frontend declaration.

   ssl-engine = <string>
     Set  the  SSL  engine.  This  is  used  with SSL accelerator cards. See the
     OpenSSL documentation for legal values.

   syslog = on|off
     Send messages to syslog. Default is off.

   syslog-facility = <string>
     Set the syslog facility. Default is "daemon".

   user = <string>
     User to run as. If Hitch is started as root, it will insist on changing  to
     a user with lower rights after binding to sockets.

   workers = <number>|auto
     Number  of  worker  processes. One per CPU core is recommended.  Using auto
     value creates 1 worker per CPU core.

   write-ip = on|off
     Report the client ip to the backend by writing IP before sending data.

     This option is mutually exclusive with each of the options  write-proxy-v2,
     write-proxy-v1 and proxy-proxy.

     Default is off.

   write-proxy-v1 = on|off
     Report client address using the PROXY protocol.

     This  option is mutually exclusive with option write-proxy-v2, write-ip and
     proxy-proxy.

     Default is off.

   write-proxy-v2 = on|off
     Report client address using PROXY v2 protocol.

     This option is mutually exclusive with option write-ip, write-proxy-v1  and
     proxy-proxy.

     Default is off.

   proxy-tlv = on|off
     Report extra information as part of the PROXYv2 header.

     Currently the following will be transmitted when proxy-tlv is enabled:

	* Cipher

	* Protocol version

	* Client certificate verification result

	* Whether  the	client transmitted a certificate as part of this connec-
	  tion/session (PP2_CLIENT_CERT_CONN, PP2_CLIENT_CERT_SESS)

     Default is on.

   proxy-client-cert = on|off
     Transmit the authenticated  client  certificate  as  part	of  the  PROXYv2
     header.

     The  PEM-formatted client certificate will be transmitted as a TLV field of
     type 0xe0.

     This is a custom application-specific type, requiring a a custom handler at
     the recipient end. Note that using this feature will inflate  the	size  of
     the PROXY header substantially, possibly also requiring tweaking at the re-
     ceiving end.

   tcp-fastopen = on|off
     Enable TCP Fast Open.

     Default is off.

   backend-connect-timeout = <number>
     Configures the backend connect timeout.

   ssl-handshake-timeout = <number>
     Configures the TLS handshake timeout.

EXAMPLE
     The following file shows the syntax needed to get started with:

	frontend = {
	    host = "*"
	    port = "443"
	}
	backend = "[127.0.0.1]:6086"	# 6086 is the default Varnish PROXY port.
	workers = 4			# number of CPU cores

	daemon = on

	# We strongly recommend you create a separate non-privileged hitch
	# user and group
	user = "hitch"
	group = "hitch"

	# Enable to let clients negotiate HTTP/2 with ALPN. (default off)
	# alpn-protos = "h2, http/1.1"

	# run Varnish as backend over PROXY; varnishd -a :80 -a localhost:6086,PROXY ..
	write-proxy-v2 = on		# Write PROXY header

AUTHOR
     This    manual    was    written	 by    PAYl    Hermunn	  Johansen    <-
     hermunn@varnish-software.com>

								   HITCH.CONF(5)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=hitch.conf&sektion=5&manpath=FreeBSD+Ports+15.1.quarterly>

home | help