summaryrefslogtreecommitdiffstats
path: root/doc/manpages/gnutls-serv.1
diff options
context:
space:
mode:
Diffstat (limited to 'doc/manpages/gnutls-serv.1')
-rw-r--r--doc/manpages/gnutls-serv.1561
1 files changed, 561 insertions, 0 deletions
diff --git a/doc/manpages/gnutls-serv.1 b/doc/manpages/gnutls-serv.1
new file mode 100644
index 0000000..75c6807
--- /dev/null
+++ b/doc/manpages/gnutls-serv.1
@@ -0,0 +1,561 @@
+.de1 NOP
+. it 1 an-trap
+. if \\n[.$] \,\\$*\/
+..
+.ie t \
+.ds B-Font [CB]
+.ds I-Font [CI]
+.ds R-Font [CR]
+.el \
+.ds B-Font B
+.ds I-Font I
+.ds R-Font R
+.TH gnutls-serv 1 "09 Feb 2023" "3.7.9" "User Commands"
+.SH NAME
+\f\*[B-Font]gnutls-serv\fP
+\- GnuTLS server
+.SH SYNOPSIS
+\f\*[B-Font]gnutls-serv\fP
+.\" Mixture of short (flag) options and long options
+[\f\*[B-Font]\-flags\f[]]
+[\f\*[B-Font]\-flag\f[] [\f\*[I-Font]value\f[]]]
+[\f\*[B-Font]\-\-option-name\f[][[=| ]\f\*[I-Font]value\f[]]]
+.sp \n(Ppu
+.ne 2
+
+All arguments must be options.
+.sp \n(Ppu
+.ne 2
+.SH "DESCRIPTION"
+Server program that listens to incoming TLS connections.
+.sp
+.SH "OPTIONS"
+.TP
+.NOP \f\*[B-Font]\-d\f[] \f\*[I-Font]num\f[], \f\*[B-Font]\-\-debug\f[]=\f\*[I-Font]num\f[]
+Enable debugging.
+This option takes an integer number as its argument.
+The value of
+\f\*[I-Font]num\f[]
+is constrained to being:
+.in +4
+.nf
+.na
+in the range 0 through 9999
+.fi
+.in -4
+.sp
+Specifies the debug level.
+.TP
+.NOP \f\*[B-Font]\-\-sni\-hostname\f[]=\f\*[I-Font]str\f[]
+Server's hostname for server name extension.
+.sp
+Server name of type host_name that the server will recognise as its own. If the server receives client hello with different name, it will send a warning\-level unrecognized_name alert.
+.TP
+.NOP \f\*[B-Font]\-\-sni\-hostname\-fatal\f[]
+Send fatal alert on sni-hostname mismatch.
+.sp
+.TP
+.NOP \f\*[B-Font]\-\-alpn\f[]=\f\*[I-Font]str\f[]
+Specify ALPN protocol to be enabled by the server.
+This option may appear an unlimited number of times.
+.sp
+Specify the (textual) ALPN protocol for the server to use.
+.TP
+.NOP \f\*[B-Font]\-\-alpn\-fatal\f[]
+Send fatal alert on non-matching ALPN name.
+.sp
+.TP
+.NOP \f\*[B-Font]\-\-noticket\f[]
+Don't accept session tickets.
+.sp
+.TP
+.NOP \f\*[B-Font]\-\-earlydata\f[]
+Accept early data.
+.sp
+.TP
+.NOP \f\*[B-Font]\-\-maxearlydata\f[]=\f\*[I-Font]num\f[]
+The maximum early data size to accept.
+This option takes an integer number as its argument.
+The value of
+\f\*[I-Font]num\f[]
+is constrained to being:
+.in +4
+.nf
+.na
+in the range 1 through 2147483648
+.fi
+.in -4
+.sp
+.TP
+.NOP \f\*[B-Font]\-\-nocookie\f[]
+Don't require cookie on DTLS sessions.
+.sp
+.TP
+.NOP \f\*[B-Font]\-g\f[], \f\*[B-Font]\-\-generate\f[]
+Generate Diffie-Hellman parameters.
+.sp
+.TP
+.NOP \f\*[B-Font]\-q\f[], \f\*[B-Font]\-\-quiet\f[]
+Suppress some messages.
+.sp
+.TP
+.NOP \f\*[B-Font]\-\-nodb\f[]
+Do not use a resumption database.
+.sp
+.TP
+.NOP \f\*[B-Font]\-\-http\f[]
+Act as an HTTP server.
+.sp
+.TP
+.NOP \f\*[B-Font]\-\-echo\f[]
+Act as an Echo server.
+.sp
+.TP
+.NOP \f\*[B-Font]\-\-crlf\f[]
+Do not replace CRLF by LF in Echo server mode.
+.sp
+.TP
+.NOP \f\*[B-Font]\-u\f[], \f\*[B-Font]\-\-udp\f[]
+Use DTLS (datagram TLS) over UDP.
+.sp
+.TP
+.NOP \f\*[B-Font]\-\-mtu\f[]=\f\*[I-Font]num\f[]
+Set MTU for datagram TLS.
+This option takes an integer number as its argument.
+The value of
+\f\*[I-Font]num\f[]
+is constrained to being:
+.in +4
+.nf
+.na
+in the range 0 through 17000
+.fi
+.in -4
+.sp
+.TP
+.NOP \f\*[B-Font]\-\-srtp\-profiles\f[]=\f\*[I-Font]str\f[]
+Offer SRTP profiles.
+.sp
+.TP
+.NOP \f\*[B-Font]\-a\f[], \f\*[B-Font]\-\-disable\-client\-cert\f[]
+Do not request a client certificate.
+This option must not appear in combination with any of the following options:
+require-client-cert.
+.sp
+.TP
+.NOP \f\*[B-Font]\-r\f[], \f\*[B-Font]\-\-require\-client\-cert\f[]
+Require a client certificate.
+.sp
+This option before 3.6.0 used to imply \-\-verify\-client\-cert.
+Since 3.6.0 it will no longer verify the certificate by default.
+.TP
+.NOP \f\*[B-Font]\-\-verify\-client\-cert\f[]
+If a client certificate is sent then verify it.
+.sp
+Do not require, but if a client certificate is sent then verify it and close the connection if invalid.
+.TP
+.NOP \f\*[B-Font]\-\-compress\-cert\f[]=\f\*[I-Font]str\f[]
+Compress certificate.
+This option may appear an unlimited number of times.
+.sp
+This option sets a supported compression method for certificate compression.
+.TP
+.NOP \f\*[B-Font]\-b\f[], \f\*[B-Font]\-\-heartbeat\f[]
+Activate heartbeat support.
+.sp
+Regularly ping client via heartbeat extension messages
+.TP
+.NOP \f\*[B-Font]\-\-x509fmtder\f[]
+Use DER format for certificates to read from.
+.sp
+.TP
+.NOP \f\*[B-Font]\-\-priority\f[]=\f\*[I-Font]str\f[]
+Priorities string.
+.sp
+TLS algorithms and protocols to enable. You can
+use predefined sets of ciphersuites such as PERFORMANCE,
+NORMAL, SECURE128, SECURE256. The default is NORMAL.
+.sp
+Check the GnuTLS manual on section \(lqPriority strings\(rq for more
+information on allowed keywords
+.TP
+.NOP \f\*[B-Font]\-\-dhparams\f[]=\f\*[I-Font]file\f[]
+DH params file to use.
+.sp
+.TP
+.NOP \f\*[B-Font]\-\-x509cafile\f[]=\f\*[I-Font]str\f[]
+Certificate file or PKCS #11 URL to use.
+.sp
+.TP
+.NOP \f\*[B-Font]\-\-x509crlfile\f[]=\f\*[I-Font]file\f[]
+CRL file to use.
+.sp
+.TP
+.NOP \f\*[B-Font]\-\-pgpkeyfile\f[]=\f\*[I-Font]file\f[]
+PGP Key file to use.
+.sp
+.sp
+.B
+NOTE: THIS OPTION IS DEPRECATED
+.TP
+.NOP \f\*[B-Font]\-\-x509keyfile\f[]=\f\*[I-Font]str\f[]
+X.509 key file or PKCS #11 URL to use.
+This option may appear an unlimited number of times.
+.sp
+Specify the private key file or URI to use; it must correspond to
+the certificate specified in \-\-x509certfile. Multiple keys and certificates
+can be specified with this option and in that case each occurrence of keyfile
+must be followed by the corresponding x509certfile or vice\-versa.
+.TP
+.NOP \f\*[B-Font]\-\-x509certfile\f[]=\f\*[I-Font]str\f[]
+X.509 Certificate file or PKCS #11 URL to use.
+This option may appear an unlimited number of times.
+.sp
+Specify the certificate file or URI to use; it must correspond to
+the key specified in \-\-x509keyfile. Multiple keys and certificates
+can be specified with this option and in that case each occurrence of keyfile
+must be followed by the corresponding x509certfile or vice\-versa.
+.TP
+.NOP \f\*[B-Font]\-\-x509dsakeyfile\f[]
+This is an alias for the \fI--x509keyfile\fR option.
+.sp
+.B
+NOTE: THIS OPTION IS DEPRECATED
+.TP
+.NOP \f\*[B-Font]\-\-x509dsacertfile\f[]
+This is an alias for the \fI--x509certfile\fR option.
+.sp
+.B
+NOTE: THIS OPTION IS DEPRECATED
+.TP
+.NOP \f\*[B-Font]\-\-x509ecckeyfile\f[]
+This is an alias for the \fI--x509keyfile\fR option.
+.sp
+.B
+NOTE: THIS OPTION IS DEPRECATED
+.TP
+.NOP \f\*[B-Font]\-\-x509ecccertfile\f[]
+This is an alias for the \fI--x509certfile\fR option.
+.sp
+.B
+NOTE: THIS OPTION IS DEPRECATED
+.TP
+.NOP \f\*[B-Font]\-\-rawpkkeyfile\f[]=\f\*[I-Font]str\f[]
+Private key file (PKCS #8 or PKCS #12) or PKCS #11 URL to use.
+This option may appear an unlimited number of times.
+.sp
+Specify the private key file or URI to use; it must correspond to
+the raw public\-key specified in \-\-rawpkfile. Multiple key pairs
+can be specified with this option and in that case each occurrence of keyfile
+must be followed by the corresponding rawpkfile or vice\-versa.
+.sp
+In order to instruct the application to negotiate raw public keys one
+must enable the respective certificate types via the priority strings (i.e. CTYPE\-CLI\-*
+and CTYPE\-SRV\-* flags).
+.sp
+Check the GnuTLS manual on section \(lqPriority strings\(rq for more
+information on how to set certificate types.
+.TP
+.NOP \f\*[B-Font]\-\-rawpkfile\f[]=\f\*[I-Font]str\f[]
+Raw public-key file to use.
+This option may appear an unlimited number of times.
+This option must appear in combination with the following options:
+rawpkkeyfile.
+.sp
+Specify the raw public\-key file to use; it must correspond to
+the private key specified in \-\-rawpkkeyfile. Multiple key pairs
+can be specified with this option and in that case each occurrence of keyfile
+must be followed by the corresponding rawpkfile or vice\-versa.
+.sp
+In order to instruct the application to negotiate raw public keys one
+must enable the respective certificate types via the priority strings (i.e. CTYPE\-CLI\-*
+and CTYPE\-SRV\-* flags).
+.sp
+Check the GnuTLS manual on section \(lqPriority strings\(rq for more
+information on how to set certificate types.
+.TP
+.NOP \f\*[B-Font]\-\-srppasswd\f[]=\f\*[I-Font]file\f[]
+SRP password file to use.
+.sp
+.TP
+.NOP \f\*[B-Font]\-\-srppasswdconf\f[]=\f\*[I-Font]file\f[]
+SRP password configuration file to use.
+.sp
+.TP
+.NOP \f\*[B-Font]\-\-pskpasswd\f[]=\f\*[I-Font]file\f[]
+PSK password file to use.
+.sp
+.TP
+.NOP \f\*[B-Font]\-\-pskhint\f[]=\f\*[I-Font]str\f[]
+PSK identity hint to use.
+.sp
+.TP
+.NOP \f\*[B-Font]\-\-ocsp\-response\f[]=\f\*[I-Font]str\f[]
+The OCSP response to send to client.
+This option may appear an unlimited number of times.
+.sp
+If the client requested an OCSP response, return data from this file to the client.
+.TP
+.NOP \f\*[B-Font]\-\-ignore\-ocsp\-response\-errors\f[]
+Ignore any errors when setting the OCSP response.
+.sp
+That option instructs gnutls to not attempt to match the provided OCSP responses with the certificates.
+.TP
+.NOP \f\*[B-Font]\-p\f[] \f\*[I-Font]num\f[], \f\*[B-Font]\-\-port\f[]=\f\*[I-Font]num\f[]
+The port to connect to.
+This option takes an integer number as its argument.
+.sp
+.TP
+.NOP \f\*[B-Font]\-l\f[], \f\*[B-Font]\-\-list\f[]
+Print a list of the supported algorithms and modes.
+.sp
+Print a list of the supported algorithms and modes. If a priority string is given then only the enabled ciphersuites are shown.
+.TP
+.NOP \f\*[B-Font]\-\-provider\f[]=\f\*[I-Font]file\f[]
+Specify the PKCS #11 provider library.
+.sp
+This will override the default options in /etc/gnutls/pkcs11.conf
+.TP
+.NOP \f\*[B-Font]\-\-keymatexport\f[]=\f\*[I-Font]str\f[]
+Label used for exporting keying material.
+.sp
+.TP
+.NOP \f\*[B-Font]\-\-keymatexportsize\f[]=\f\*[I-Font]num\f[]
+Size of the exported keying material.
+This option takes an integer number as its argument.
+.sp
+.TP
+.NOP \f\*[B-Font]\-\-recordsize\f[]=\f\*[I-Font]num\f[]
+The maximum record size to advertise.
+This option takes an integer number as its argument.
+The value of
+\f\*[I-Font]num\f[]
+is constrained to being:
+.in +4
+.nf
+.na
+in the range 0 through 16384
+.fi
+.in -4
+.sp
+.TP
+.NOP \f\*[B-Font]\-\-httpdata\f[]=\f\*[I-Font]file\f[]
+The data used as HTTP response.
+.sp
+.TP
+.NOP \f\*[B-Font]\-v\f[] \f\*[I-Font]arg\f[], \f\*[B-Font]\-\-version\f[]=\f\*[I-Font]arg\f[]
+Output version of program and exit. The default mode is `v', a simple
+version. The `c' mode will print copyright information and `n' will
+print the full copyright notice.
+.TP
+.NOP \f\*[B-Font]\-h\f[], \f\*[B-Font]\-\-help\f[]
+Display usage information and exit.
+.TP
+.NOP \f\*[B-Font]\-!\f[], \f\*[B-Font]\-\-more\-help\f[]
+Pass the extended usage information through a pager.
+
+.sp
+.SH EXAMPLES
+Running your own TLS server based on GnuTLS can be useful when
+debugging clients and/or GnuTLS itself. This section describes how to
+use \fBgnutls\-serv\fP as a simple HTTPS server.
+.sp
+The most basic server can be started as:
+.sp
+.br
+.in +4
+.nf
+gnutls\-serv \-\-http \-\-priority "NORMAL:+ANON\-ECDH:+ANON\-DH"
+.in -4
+.fi
+.sp
+It will only support anonymous ciphersuites, which many TLS clients
+refuse to use.
+.sp
+The next step is to add support for X.509. First we generate a CA:
+.sp
+.br
+.in +4
+.nf
+$ certtool \-\-generate\-privkey > x509\-ca\-key.pem
+$ echo 'cn = GnuTLS test CA' > ca.tmpl
+$ echo 'ca' >> ca.tmpl
+$ echo 'cert_signing_key' >> ca.tmpl
+$ certtool \-\-generate\-self\-signed \-\-load\-privkey x509\-ca\-key.pem \
+ \-\-template ca.tmpl \-\-outfile x509\-ca.pem
+.in -4
+.fi
+.sp
+Then generate a server certificate. Remember to change the dns_name
+value to the name of your server host, or skip that command to avoid
+the field.
+.sp
+.br
+.in +4
+.nf
+$ certtool \-\-generate\-privkey > x509\-server\-key.pem
+$ echo 'organization = GnuTLS test server' > server.tmpl
+$ echo 'cn = test.gnutls.org' >> server.tmpl
+$ echo 'tls_www_server' >> server.tmpl
+$ echo 'encryption_key' >> server.tmpl
+$ echo 'signing_key' >> server.tmpl
+$ echo 'dns_name = test.gnutls.org' >> server.tmpl
+$ certtool \-\-generate\-certificate \-\-load\-privkey x509\-server\-key.pem \
+ \-\-load\-ca\-certificate x509\-ca.pem \-\-load\-ca\-privkey x509\-ca\-key.pem \
+ \-\-template server.tmpl \-\-outfile x509\-server.pem
+.in -4
+.fi
+.sp
+For use in the client, you may want to generate a client certificate
+as well.
+.sp
+.br
+.in +4
+.nf
+$ certtool \-\-generate\-privkey > x509\-client\-key.pem
+$ echo 'cn = GnuTLS test client' > client.tmpl
+$ echo 'tls_www_client' >> client.tmpl
+$ echo 'encryption_key' >> client.tmpl
+$ echo 'signing_key' >> client.tmpl
+$ certtool \-\-generate\-certificate \-\-load\-privkey x509\-client\-key.pem \
+ \-\-load\-ca\-certificate x509\-ca.pem \-\-load\-ca\-privkey x509\-ca\-key.pem \
+ \-\-template client.tmpl \-\-outfile x509\-client.pem
+.in -4
+.fi
+.sp
+To be able to import the client key/certificate into some
+applications, you will need to convert them into a PKCS#12 structure.
+This also encrypts the security sensitive key with a password.
+.sp
+.br
+.in +4
+.nf
+$ certtool \-\-to\-p12 \-\-load\-ca\-certificate x509\-ca.pem \
+ \-\-load\-privkey x509\-client\-key.pem \-\-load\-certificate x509\-client.pem \
+ \-\-outder \-\-outfile x509\-client.p12
+.in -4
+.fi
+.sp
+For icing, we'll create a proxy certificate for the client too.
+.sp
+.br
+.in +4
+.nf
+$ certtool \-\-generate\-privkey > x509\-proxy\-key.pem
+$ echo 'cn = GnuTLS test client proxy' > proxy.tmpl
+$ certtool \-\-generate\-proxy \-\-load\-privkey x509\-proxy\-key.pem \
+ \-\-load\-ca\-certificate x509\-client.pem \-\-load\-ca\-privkey x509\-client\-key.pem \
+ \-\-load\-certificate x509\-client.pem \-\-template proxy.tmpl \
+ \-\-outfile x509\-proxy.pem
+.in -4
+.fi
+.sp
+Then start the server again:
+.sp
+.br
+.in +4
+.nf
+$ gnutls\-serv \-\-http \
+ \-\-x509cafile x509\-ca.pem \
+ \-\-x509keyfile x509\-server\-key.pem \
+ \-\-x509certfile x509\-server.pem
+.in -4
+.fi
+.sp
+Try connecting to the server using your web browser. Note that the
+server listens to port 5556 by default.
+.sp
+While you are at it, to allow connections using ECDSA, you can also
+create a ECDSA key and certificate for the server. These credentials
+will be used in the final example below.
+.sp
+.br
+.in +4
+.nf
+$ certtool \-\-generate\-privkey \-\-ecdsa > x509\-server\-key\-ecc.pem
+$ certtool \-\-generate\-certificate \-\-load\-privkey x509\-server\-key\-ecc.pem \
+ \-\-load\-ca\-certificate x509\-ca.pem \-\-load\-ca\-privkey x509\-ca\-key.pem \
+ \-\-template server.tmpl \-\-outfile x509\-server\-ecc.pem
+.in -4
+.fi
+.sp
+.sp
+The next step is to add support for SRP authentication. This requires
+an SRP password file created with \fBsrptool\fP.
+To start the server with SRP support:
+.sp
+.br
+.in +4
+.nf
+gnutls\-serv \-\-http \-\-priority NORMAL:+SRP\-RSA:+SRP \
+ \-\-srppasswdconf srp\-tpasswd.conf \
+ \-\-srppasswd srp\-passwd.txt
+.in -4
+.fi
+.sp
+Let's also start a server with support for PSK. This would require
+a password file created with \fBpsktool\fP.
+.sp
+.br
+.in +4
+.nf
+gnutls\-serv \-\-http \-\-priority NORMAL:+ECDHE\-PSK:+PSK \
+ \-\-pskpasswd psk\-passwd.txt
+.in -4
+.fi
+.sp
+If you want a server with support for raw public\-keys we can also add these
+credentials. Note however that there is no identity information linked to these
+keys as is the case with regular x509 certificates. Authentication must be done
+via different means. Also we need to explicitly enable raw public\-key certificates
+via the priority strings.
+.sp
+.br
+.in +4
+.nf
+gnutls\-serv \-\-http \-\-priority NORMAL:+CTYPE\-CLI\-RAWPK:+CTYPE\-SRV\-RAWPK \
+ \-\-rawpkfile srv.rawpk.pem \
+ \-\-rawpkkeyfile srv.key.pem
+.in -4
+.fi
+.sp
+.sp
+Finally, we start the server with all the earlier parameters and you
+get this command:
+.sp
+.br
+.in +4
+.nf
+gnutls\-serv \-\-http \-\-priority NORMAL:+PSK:+SRP:+CTYPE\-CLI\-RAWPK:+CTYPE\-SRV\-RAWPK \
+ \-\-x509cafile x509\-ca.pem \
+ \-\-x509keyfile x509\-server\-key.pem \
+ \-\-x509certfile x509\-server.pem \
+ \-\-x509keyfile x509\-server\-key\-ecc.pem \
+ \-\-x509certfile x509\-server\-ecc.pem \
+ \-\-srppasswdconf srp\-tpasswd.conf \
+ \-\-srppasswd srp\-passwd.txt \
+ \-\-pskpasswd psk\-passwd.txt \
+ \-\-rawpkfile srv.rawpk.pem \
+ \-\-rawpkkeyfile srv.key.pem
+.in -4
+.fi
+.SH "EXIT STATUS"
+One of the following exit values will be returned:
+.TP
+.NOP 0 " (EXIT_SUCCESS)"
+Successful program execution.
+.TP
+.NOP 1 " (EXIT_FAILURE)"
+The operation failed or the command syntax was not valid.
+.PP
+.SH "SEE ALSO"
+gnutls\-cli\-debug(1), gnutls\-cli(1)
+.SH "AUTHORS"
+
+.SH "COPYRIGHT"
+Copyright (C) 2020-2021 Free Software Foundation, and others all rights reserved.
+This program is released under the terms of
+the GNU General Public License, version 3 or later
+.
+.SH "BUGS"
+Please send bug reports to: bugs@gnutls.org