summaryrefslogtreecommitdiff
path: root/src/migration-scripts
diff options
context:
space:
mode:
authorJohn Estabrook <jestabro@vyos.io>2026-03-12 13:30:35 -0500
committerGitHub <noreply@github.com>2026-03-12 13:30:35 -0500
commite9f4d103284a456e10fb3776d26b9ff041f9352f (patch)
tree185b82b6d02406a329f54a5c4f00722137a6c99a /src/migration-scripts
parentc9cb691a2881a6bbd958d6ab35f9f24b08386e74 (diff)
parent0122baeac73dbd26d1461aadd502d8fa2ba3b827 (diff)
downloadvyos-1x-e9f4d103284a456e10fb3776d26b9ff041f9352f.tar.gz
vyos-1x-e9f4d103284a456e10fb3776d26b9ff041f9352f.zip
Merge pull request #5029 from c-po/openvpn-t8304
openvpn: T8304: fix migration for des, bf128 or bf256 cipher; use 3des instead
Diffstat (limited to 'src/migration-scripts')
-rw-r--r--src/migration-scripts/openvpn/0-to-111
1 files changed, 11 insertions, 0 deletions
diff --git a/src/migration-scripts/openvpn/0-to-1 b/src/migration-scripts/openvpn/0-to-1
index 582cd9a46..26f41d2ce 100644
--- a/src/migration-scripts/openvpn/0-to-1
+++ b/src/migration-scripts/openvpn/0-to-1
@@ -17,6 +17,8 @@
from vyos.configtree import ConfigTree
+updated_cipher='3des'
+
def migrate(config: ConfigTree) -> None:
if not config.exists(['interfaces', 'openvpn']):
# Nothing to do
@@ -25,6 +27,7 @@ def migrate(config: ConfigTree) -> None:
ovpn_intfs = config.list_nodes(['interfaces', 'openvpn'])
for i in ovpn_intfs:
# Remove DES and Blowfish from 'encryption cipher'
+ # Support for these insecure ciphers will be removed in OpenVPN 2.6.
cipher_path = ['interfaces', 'openvpn', i, 'encryption', 'cipher']
if config.exists(cipher_path):
cipher = config.return_value(cipher_path)
@@ -41,3 +44,11 @@ def migrate(config: ConfigTree) -> None:
if config.exists(['interfaces', 'openvpn', i, 'encryption']) and \
(config.list_nodes(['interfaces', 'openvpn', i, 'encryption']) == []):
config.delete(['interfaces', 'openvpn', i, 'encryption'])
+
+ # We need to take care about site-to-site tunnels which had an implicit
+ # OpenVPN default cipher (BF-CBC) with block size less than 128 bit (64 bit).
+ mode_path = ['interfaces', 'openvpn', i, 'mode']
+ if config.exists(mode_path) and config.return_value(mode_path) == 'site-to-site':
+ # if no explicit cipher is defined, we will "upgrade" to 3DES at least
+ if not config.exists(cipher_path):
+ config.set(cipher_path, value=updated_cipher)