Version 35 (modified by 3 years ago) (diff) | ,
---|
Deprecated Options in OpenVPN
OpenVPN is a software VPN product which has been around since May 2001. And it has mostly been backwards compatible on the most important features through all these years. But the world moves forward, security issues are discovered, and expectations of how a secure VPN should be configured have changed over the years.
As OpenVPN carries a lot of options (over 230), we need to do a clean-up here from time to time. The main goal is to be as backwards compatible in regards to the configuration files as possible. We do not recommend running any older OpenVPN releases than the latest v2.3 series. Whenever possible you should always upgrade to the latest available OpenVPN release. But some times we unfortunately need to remove old options as they impose a security risk to VPN configurations.
In this wiki page, we will try to keep an up-to-date list of all options we have deprecated, when they will be removed, the new alternative approach and the reasoning behind removing the option. This wiki page summarizes the "Deprecated features" section in the Changes.rst file which is distributed with the source code.
Table of Contents
- Option:
--key-method
- Option:
--tls-remote
- Option:
--compat-names
- Option:
--no-name-remapping
- Option:
--no-iv
- Option:
--no-replay
- Policy: Removal of insecure ciphers: Ciphers with cipher block-size …
- Policy: Migrating away from deprecated ciphers
- Option:
--keysize
- Option:
--comp-lzo
- Option:
--compress
- Option:
--ifconfig-pool-linear
- Option:
--client-cert-not-required
- Option:
--ns-cert-type
- Option:
--tun-ipv6
- Policy: Automatic Up-casing of X509 Certificate fieldnames
- Option:
--max-routes
- Option:
--dhcp-release
- Option:
--route-nopull
- Option:
--secret
- Option:
--ncp-disable
- plugin:
_v1 and _v2 functions for open and func call
- Option:
--inetd
Option: --key-method
Status | Pending removal |
---|---|
Deprecated in: | OpenVPN v2.4 |
To be removed in: | OpenVPN v2.5 |
Affects: | Client and server |
Result if used: | OpenVPN will ignore the option and provide a warning |
Replaced by: | Not replaced |
Examples: | (N/A) |
OpenVPN have used --key-method 2
since OpenVPN v2.0 if it was not provided. Using the older --key-method 1
was primarily present to allow OpenVPN clients running older releases than v2.0 to connect to a v2.0 server. This older key-method is not recommended as the key negotiation method is not as strong as the current default.
Option: --tls-remote
Status | Removed in OpenVPN v2.4.0 |
---|---|
Deprecated in: | OpenVPN v2.3 |
To be removed in: | OpenVPN v2.4 |
Affects: | Client and server |
Result if used: | OpenVPN will not start due to unknown option |
Replaced by: | --verify-x509-name
|
Examples: | --verify-x509-name 'C=KG, ST=NA, L=Bishkek, CN=Server-1'
|
--verify-x509-name Server-1 name
| |
--verify-x509-name Server name-prefix
|
Option: --compat-names
Status | Removed in OpenVPN v2.5 |
---|---|
Deprecated in: | OpenVPN v2.3 |
Affects: | Client and server |
Result if used: | OpenVPN will print an error message and terminate |
Replaced by: | Not replaced |
Examples: | (N/A) |
Ref: | https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg17804.html |
OpenVPN used the former OpenSSL formatting of X.509 Subject fields. They could look like this:
/C=US/L=Somewhere/CN=John Doe/emailAddress=john@example.com
As of OPenVPN v2.3, this format was changed to the more widely used X.509 formatting:
C=US, L=Somewhere, CN=John Doe, emailAddress=john@example.com
This option would in addition add remapping of characters and rendering most characters outside the typical a-z/A-Z/0-9 range to be replaced by an underscore (_) - unless the no-remapping
flag was added. This behaviour would in many cases be required by older authentication plug-ins or scripts which was not able to process the newer format. As this behaviour is now considered bad, it is expected that authentication plug-ins and scripts will have had enough time to get an update to handle the new X.509 Subject formatting.
Option: --no-name-remapping
Status | Removed in OpenVPN v2.5 |
---|---|
Deprecated in: | OpenVPN v2.3 |
Affects: | Client and server |
Result if used: | OpenVPN will print an error message and terminate |
Replaced by: | Not replaced |
Examples: | (N/A) |
Ref: | https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg17804.html |
This is essentially just an alias for --compat-names no-remapping
. This option would avoid the character remapping of characters being outside the typical a-z/A-Z/0-9 range in the X.509 Subject identifiers.
Option: --no-iv
Status | Removed in OpenVPN v2.5 |
---|---|
Deprecated in: | OpenVPN v2.4 |
To be removed in: | OpenVPN v2.5 |
Affects: | Client and server |
Result if used: | OpenVPN will refuse the option and provide an error message that the option is no longer supported |
Replaced by: | Not replaced |
Examples: | (N/A) |
This option will disable OpenVPN's use of the cipher initialization vector (IV). This is considered very harmful on today's ciphers and will severely reduce the security of VPN tunnels. As the use cases for --no-iv
are few and mostly obscure, it was decided to remove this option to ensure the tunnels security can not be deliberately reduced.
Option: --no-replay
Status | Pending removal |
---|---|
Deprecated in: | OpenVPN v2.4 |
To be removed in: | OpenVPN v2.5 |
Affects: | Client and server |
Result if used: | OpenVPN will refuse the option and provide an error message that the option is no longer supported |
Replaced by: | Not replaced |
Examples: | (N/A) |
This option will disable OpenVPN's use of replay protection. This slightly reduces the overhead (8 bytes per packet for static keyed setups, 4 bytes for TLS with CBC mode, 0 bytes for TLS with GCM/OFB/CFB mode). The overhead reduction in CBC mode can better be achieved by switching to GCM mode. The remaining benefit for static key mode does not warrant the keeping this option around. The added code complexity adds attack surface and increases the chance of users reducing their security more than they realise.
Policy: Removal of insecure ciphers: Ciphers with cipher block-size less than 128 bits (most commonly BF
, DES
, CAST5
, IDEA
and RC2
)
Status | Pending removal |
---|---|
Deprecated in: | OpenVPN v2.4 |
To be removed in: | OpenVPN v2.6 |
Affects: | Client and server |
Result if used: | OpenVPN will not start due to incorrect cipher being used |
Replaced by: | Replaced by stronger ciphers, most commonly AES-256-GCM |
Examples: | (N/A) |
After the discovery of the SWEET32 Birthday attacks on 64-bit block ciphers any cipher using a cipher block length smaller than 128 bits is considered insecure and prune to be successfully attacked. The cipher block length is not an indication of the cipher key length.
Policy: Migrating away from deprecated ciphers
With the OpenVPN v2.4 release a new feature was introduced, Negotiable Crypto Parameters (NCP). This allows users to seamlessly migrate away from deprecated ciphers without much extra work. If both client and server runs OpenVPN v2.4 without NCP being disabled (--ncp-disable
), the tunnel will automatically be upgraded to AES-256-GCM
. If the environment also uses clients older than OpenVPN v2.4, the server can deploy:
--ncp-ciphers AES-256-GCM:AES-256-CBC:BF-CBC
This will allow older clients to add or change --cipher
to use AES-256-CBC
instead of the default BF-CBC
or any other cipher enlisted. This can be done on client configuration files on a one-by-one approach. Unmodified clients will be able to connect as before. Once all clients have been updated to OpenVPN v2.4 or later (preferred) or have their configuration altered, the --ncp-ciphers
list can be modified to remove BF-CBC
.
WARNING: This migration approach will not work after the release of OpenVPN v2.6. As of that release, BF-CBC
, CAST
or RC2
ciphers will not be accepted any more.
NOTE: For Fedora 27, if the openvpn-server@.service
unit file is used for server configurations, this migration path have already been enabled.
Option: --keysize
Status | Pending removal |
---|---|
Deprecated in: | OpenVPN v2.4 |
To be removed in: | OpenVPN v2.6 |
Affects: | Client and server |
Result if used: | OpenVPN will ignore the option and provide a warning |
Replaced by: | Not replaced |
Examples: | (N/A) |
The --keysize
option was only useful to change the key length when using the BF
, CAST6
or RC2
ciphers. For all other ciphers the key-size is fixed with the chosen cipher. As OpenVPN v2.6 will no longer support any of these variable length ciphers, this option will be removed as well to avoid confusion.
Option: --comp-lzo
Status | Currently not planned for removal, see description for details |
---|---|
Deprecated in: | OpenVPN v2.4 |
To be removed in: | (not decided) |
Affects: | Client and server |
Result if used: | OpenVPN will ignore the option and provide a warning |
Replaced by: | Not replaced |
Examples: | (N/A) |
Compression is not recommended and is a feature users should avoid using. To signal this clearly, --comp-lzo
and --compress
are discouraged and considered deprecated features. They will be removed in a future release.
Option: --compress
Status | Currently not planned for removal, see description for details |
---|---|
Deprecated in: | OpenVPN v2.5 |
To be removed in: | (not decided) |
Affects: | Client and server |
Result if used: | OpenVPN will ignore the option and provide a warning |
Replaced by: | Not replaced |
Examples: | (N/A) |
Compression is not recommended and is a feature users should avoid using. To signal this clearly, --comp-lzo
and --compress
are discouraged and considered deprecated features. They will be removed in a future release.
Option: --ifconfig-pool-linear
Status | Pending removal |
---|---|
Deprecated in: | OpenVPN v2.1 |
To be removed in: | OpenVPN v2.5 |
Affects: | Client and server |
Result if used: | OpenVPN will not start due to unknown option |
Replaced by: | --topology
|
Examples: | --topology p2p
|
This option will not work with Windows based clients. Since the --topology p2p
mode is equivalent to --ifconfig-pool-linear
and works with Windows, this option will be removed.
Option: --client-cert-not-required
Status | Pending removal |
---|---|
Deprecated in: | OpenVPN v2.4 |
To be removed in: | OpenVPN v2.5 |
Affects: | Client and server |
Result if used: | OpenVPN will not start due to unknown option |
Replaced by: | --verify-client-cert
|
Examples: | --verify-client-cert none
|
--verify-client-cert optional
| |
--verify-client-cert require
|
The replacement option allows a far more fine grained control of authentication methods, and can allow a combination of only username/password authentication, only certificate based authentication or a combination. This would not be possible with the old --client-cert-not-required
option.
Option: --ns-cert-type
Status | Pending removal |
---|---|
Deprecated in: | OpenVPN v2.4 and v2.3.18 |
To be removed in: | OpenVPN v2.6 or v2.7 |
Affects: | Client and server |
Result if used: | OpenVPN will complain and remap to replacement option |
Replaced by: | --remote-cert-tls
|
Examples: | --remote-cert-tls server
|
--remote-cert-tls client
|
As of OpenSSL v1.1, the nsCertType extension in X.509 certificates are no longer supported. This extension is old and has been deprecated for a long time. The replacement option, --remote-cert-tls
is a macro which sets the --remote-cert-ku
and --remote-cert-eku
to appropriate values, depending on whether you to check if the remote provided certificate is a server certificate or client certificate. As the extended key usage extension is far more commonly used today, this is effectively the equivalent of --ns-cert-type
. For the time being, if --ns-cert-type
is used in OpenVPN v2.5 or later, it will currently be re-mapped to --remote-cert-tls
and complain about a deprecated option being used.
This cannot be turned into a "hard error" for v2.5 due to compatibility issues with OpenVPN AS and commercial upgrade cycles.
Option: --tun-ipv6
Status | Removed in OpenVPN 2.4l |
---|---|
Deprecated in: | OpenVPN v2.4 |
To be removed in: | OpenVPN v2.4 |
Affects: | Client and server |
Result if used: | OpenVPN will complain and ignore the option |
Replaced by: | Not replaced |
Examples: |
This option was useful when IPv6 tun support was non standard and was an internal/user specified flag that tracked the Ipv6 capability of the tun device.
Today, all supported OS support IPv6 and indicating explicit support is not needed any more. Also tun-ipv6 is pushable by the remote so not putting tun-ipv6 does not forbid ipv6 addresses.
Policy: Automatic Up-casing of X509 Certificate fieldnames
Status | Planned for removal |
---|---|
Deprecated in: | OpenVPN v2.3 |
To be removed in: | |
Affects: | Server |
Result if used: | n/a (Always used) |
Replaced by: | Not replaced |
Examples: | This feature converts an all-lowercase fieldname to uppercase characters, e.g., ou -> OU |
See --x509-username-field in https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage for a detailed explanation.
Option: --max-routes
Status | Planned for removal |
---|---|
Deprecated in: | OpenVPN v2.4 |
To be removed in: | |
Affects: | |
Result if used: | ignored |
Replaced by: | |
Examples: |
Option: --dhcp-release
Status | Enabled by default |
---|---|
Deprecated in: | OpenVPN v2.4 |
To be removed in: | |
Affects: | |
Result if used: | ignored |
Replaced by: | |
Examples: | |
Notes: | Windows only |
Option: --route-nopull
Status | Disabled by default |
---|---|
Deprecated in: | Deprecation is under discussion |
To be removed in: | |
Affects: | Client routing, dhcp-options and Windows firewall |
Result if used: | See the manual |
Replaced by: | --pull-filter
|
Examples: | |
Notes: | Openvpn devs would like to know if you use this option |
Option: --secret
Status | Planned for removal |
---|---|
Deprecated in: | OpenVPN v2.4 |
To be removed in: | |
Affects: | --genkey
|
Result if used: | User Warning printed |
Replaced by: | secret (No leading double dash)
|
Examples: | Use --genkey secret filename
|
Notes: |
Option: --ncp-disable
Status | Planned for removal |
---|---|
Deprecated in: | OpenVPN v2.5 |
To be removed in: | OpenVPN v2.6 |
Affects: | --ncp-disable
|
Result if used: | User Warning printed |
Replaced by: | |
Examples: | |
Notes: | ncp-disable was mainly a debug option that allowed disabling ncp if there were problem with dynamic cipher negioation. With the current status of NCP, this option is no longer necessary.
|
plugin: _v1 and _v2 functions for open and func call
Status | Planned for removal |
---|---|
Deprecated in: | OpenVPN v2.5 (to be done) |
To be removed in: | OpenVPN v2.6 or v2.7 |
Affects: | plugins still use the old API |
Result if used: | User Warning printed, later: refuse to load plugin |
Replaced by: | _v3 functions |
Examples: | |
Notes: | the _v3 API functions can do everything _v1 and _v2 can do, and the existence of the old functions mostly confuses everyone |
Option: --inetd
Status | Planned for removal |
---|---|
Deprecated in: | OpenVPN v2.5 |
To be removed in: | OpenVPN v2.6 |
Affects: | --inetd
|
Result if used: | User Warning printed |
Replaced by: | |
Examples: | |
Notes: | This is a very limited and not-well-tested way to run OpenVPN, on TCP and TAP mode only, which complicates the code quite a bit for little gain. To be removed in OpenVPN 2.6 (unless users protest). |