]> git.ipfire.org Git - thirdparty/openvpn.git/blame - README.ec
documentation: improve documentation of --x509-track
[thirdparty/openvpn.git] / README.ec
CommitLineData
609e8131
SK
1Since 2.4.0, OpenVPN has official support for elliptic curve crypto. Elliptic
2curves are an alternative to RSA for asymmetric encryption.
3
4Elliptic curve crypto ('ECC') can be used for the ('TLS') control channel only
5in OpenVPN; the data channel (encrypting the actual network traffic) uses
6symmetric encryption. ECC can be used in TLS for authentication (ECDSA) and key
7exchange (ECDH).
8
9Key exchange (ECDH)
10-------------------
11OpenVPN 2.4.0 and newer automatically initialize ECDH parameters. When ECDSA is
12used for authentication, the curve used for the server certificate will be used
13for ECDH too. When autodetection fails (e.g. when using RSA certificates)
14OpenVPN lets the crypto library decide if possible, or falls back to the
8353ae80
AS
15secp384r1 curve. The list of groups/curves that the crypto library will choose
16from can be set with the --tls-groups <grouplist> option.
609e8131
SK
17
18An administrator can force an OpenVPN/OpenSSL server to use a specific curve
19using the --ecdh-curve <curvename> option with one of the curves listed as
8353ae80 20available by the --show-groups option. Clients will use the same curve as
609e8131
SK
21selected by the server.
22
8353ae80 23Note that not all curves listed by --show-groups are available for use with TLS;
609e8131
SK
24in that case connecting will fail with a 'no shared cipher' TLS error.
25
26Authentication (ECDSA)
27----------------------
28Since OpenVPN 2.4.0, using ECDSA certificates works 'out of the box'. Which
29specific curves and cipher suites are available depends on your version and
30configuration of the crypto library. The crypto library will automatically
31select a cipher suite for the TLS control channel.
32
33Support for generating an ECDSA certificate chain is available in EasyRSA (in
34spite of it's name) since EasyRSA 3.0. The parameters you're looking for are
35'--use-algo=ec' and '--curve=<curve_name>'. See the EasyRSA documentation for
36more details on generating ECDSA certificates.