Я пытаюсь обновить наш сервер openvpn до версии 2.4.8, чтобы воспользоваться преимуществами большая очередь ожидания listen (). Однако мы видим следующие ошибки:
Mar 6 00:18:06 nebula ovpn-nebula[8220]: 1.1.1.1:56176 VERIFY OK: depth=4, C=US, ST=CA, L=Los Angeles, O=XXXXX, OU=Dev, CN=DevEnvironmentL1RootCA
Mar 6 00:18:06 nebula ovpn-nebula[8220]: 1.1.1.1:56176 VERIFY OK: depth=3, C=US, ST=CA, L=Los Angeles, CN=DevEnvironmentL2IntermediateCA, O=XXXXX Inc.
Mar 6 00:18:06 nebula ovpn-nebula[8220]: 1.1.1.1:56176 VERIFY OK: depth=2, ST=CA, CN=DevEnvironmentL3IssuingCA, C=US, L=Los Angeles, O=XXXXX Inc.
Mar 6 00:18:06 nebula ovpn-nebula[8220]: 1.1.1.1:56176 VERIFY OK: depth=1, C=US, ST=CA, L=Los Angeles, O=XXXXX, CN=org338.XXXXX.com
Mar 6 00:18:06 nebula ovpn-nebula[8220]: 1.1.1.1:56176 VERIFY OK: depth=0, C=US, ST=CA, L=Los Angeles, O=OPHQ, OU=Q, CN=acu212.org338.dev.XXXXX.local
Mar 6 00:18:06 nebula ovpn-nebula[8220]: 1.1.1.1:56176 OpenSSL: error:1414D17A:SSL routines:tls12_check_peer_sigalg:wrong curve
Mar 6 00:18:06 nebula ovpn-nebula[8220]: 1.1.1.1:56176 TLS_ERROR: BIO read tls_read_plaintext error
Mar 6 00:18:06 nebula ovpn-nebula[8220]: 1.1.1.1:56176 TLS Error: TLS object -> incoming plaintext read error
Mar 6 00:18:06 nebula ovpn-nebula[8220]: 1.1.1.1:56176 TLS Error: TLS handshake failed
Mar 6 00:18:06 nebula ovpn-nebula[8220]: 1.1.1.1:56176 Fatal TLS error (check_tls_errors_co), restarting
Mar 6 00:18:06 nebula ovpn-nebula[8220]: 1.1.1.1:56176 SIGUSR1[soft,tls-error] received, client-instance restarting
Mar 6 00:18:06 nebula ovpn-nebula[8220]: 1.1.1.1:45484 VERIFY OK: depth=4, C=US, ST=CA, L=Los Angeles, O=XXXXX, OU=Dev, CN=DevEnvironmentL1RootCA
Mar 6 00:18:06 nebula ovpn-nebula[8220]: 1.1.1.1:45484 VERIFY OK: depth=3, C=US, ST=CA, L=Los Angeles, CN=DevEnvironmentL2IntermediateCA, O=XXXXX Inc.
Mar 6 00:18:06 nebula ovpn-nebula[8220]: 1.1.1.1:45484 VERIFY OK: depth=2, ST=CA, CN=DevEnvironmentL3IssuingCA, C=US, L=Los Angeles, O=XXXXX Inc.
Mar 6 00:18:06 nebula ovpn-nebula[8220]: 1.1.1.1:45484 VERIFY OK: depth=1, C=US, ST=CA, L=Los Angeles, O=XXXXX, CN=org343.XXXXX.com
Mar 6 00:18:06 nebula ovpn-nebula[8220]: 1.1.1.1:45484 VERIFY OK: depth=0, C=US, ST=CA, L=Los Angeles, O=OPHQ, OU=Q, CN=acu33.org343.dev.XXXXX.local
Mar 6 00:18:06 nebula ovpn-nebula[8220]: 1.1.1.1:45484 OpenSSL: error:1414D17A:SSL routines:tls12_check_peer_sigalg:wrong curve
Mar 6 00:18:06 nebula ovpn-nebula[8220]: 1.1.1.1:45484 TLS_ERROR: BIO read tls_read_plaintext error
Mar 6 00:18:06 nebula ovpn-nebula[8220]: 1.1.1.1:45484 TLS Error: TLS object -> incoming plaintext read error
Mar 6 00:18:06 nebula ovpn-nebula[8220]: 1.1.1.1:45484 TLS Error: TLS handshake failed
Mar 6 00:18:06 nebula ovpn-nebula[8220]: 1.1.1.1:45484 Fatal TLS error (check_tls_errors_co), restarting
Mar 6 00:18:06 nebula ovpn-nebula[8220]: 1.1.1.1:45484 SIGUSR1[soft,tls-error] received, client-instance restarting
Цепочка сертификатов включает в себя как ECDSA (с кривыми prime256v1), так и ключи и сертификаты RSA.
Мы не видим никаких ошибок при понижении до openvpn 2.4.7 или любых более ранних версий.
Динамически подключаемые библиотеки для 2.4.7 и 2.4.8 выглядят одинаково:
для 2.4.7:
$ ldd /usr/sbin/openvpn
linux-vdso.so.1 (0x00007ffcce786000)
liblzo2.so.2 => /lib/x86_64-linux-gnu/liblzo2.so.2 (0x00007ff8dd406000)
liblz4.so.1 => /usr/lib/x86_64-linux-gnu/liblz4.so.1 (0x00007ff8dd1ea000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ff8dcfcb000)
libpkcs11-helper.so.1 => /usr/lib/x86_64-linux-gnu/libpkcs11-helper.so.1 (0x00007ff8dcdb0000)
libcrypto.so.1.1 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007ff8dc8e5000)
libssl.so.1.1 => /usr/lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007ff8dc658000)
libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007ff8dc3d4000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ff8dc1d0000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff8dbddf000)
/lib64/ld-linux-x86-64.so.2 (0x00007ff8dd8ed000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007ff8dbbd7000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007ff8db9b1000)
libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007ff8db695000)
libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007ff8db480000)
для 2.4.8:
$ ldd /usr/sbin/openvpn
linux-vdso.so.1 (0x00007ffe33adf000)
liblzo2.so.2 => /lib/x86_64-linux-gnu/liblzo2.so.2 (0x00007f272d11b000)
liblz4.so.1 => /usr/lib/x86_64-linux-gnu/liblz4.so.1 (0x00007f272ceff000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f272cce0000)
libpkcs11-helper.so.1 => /usr/lib/x86_64-linux-gnu/libpkcs11-helper.so.1 (0x00007f272cac5000)
libcrypto.so.1.1 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007f272c5fa000)
libssl.so.1.1 => /usr/lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007f272c36d000)
libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007f272c0e9000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f272bee5000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f272baf4000)
/lib64/ld-linux-x86-64.so.2 (0x00007f272d602000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f272b8ec000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f272b6c6000)
libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007f272b3aa000)
libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f272b195000)
пример сертификата сервера:
openssl x509 -in crt.pem -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
aa:ae:4c:ea:bc:48:5b:18:f8:c6:cd:6a:f1:07:2f:61
Signature Algorithm: ecdsa-with-SHA384
Issuer: C = US, ST = CA, L = Los Angeles, O = XXXXX, CN = sandboxEnvironmentL3IssuingCA
Validity
Not Before: Aug 20 00:06:35 2018 GMT
Not After : Aug 18 00:06:35 2028 GMT
Subject: C = US, ST = CA, L = LA, O = OP, OU = G, CN = nebula.sandbox.XXXXX.com
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
pub:
04:86:b6:99:9b:70:fb:d2:51:5f:4c:f2:d3:f3:cd:
e9:f9:d3:33:a3:b9:d4:5d:cc:0d:05:8d:c0:ff:9f:
70:fa:ec:c8:a3:e7:0d:1a:d1:5f:24:f3:5f:98:87:
43:c7:68:64:00:9d:14:12:a6:2f:87:44:3a:64:59:
60:8d:fe:da:52
ASN1 OID: prime256v1
NIST CURVE: P-256
X509v3 extensions:
X509v3 Basic Constraints: critical
CA:FALSE
X509v3 CRL Distribution Points:
Full Name:
URI:http://crl.sandbox.XXXX.com/c5e53bbd2876e2b94a66b325ce095c2b.crl
X509v3 Subject Alternative Name: critical
DNS:nebula.sandbox.XXXXX.com
Signature Algorithm: ecdsa-with-SHA384
30:64:02:30:5a:77:b9:87:2f:5b:55:e1:76:f5:7d:94:67:d6:
d8:8f:57:5c:f8:43:97:03:a7:11:2b:be:76:3c:1f:20:01:75:
c6:3a:ae:8e:db:29:c2:fa:f4:07:37:51:95:dd:2b:42:02:30:
21:59:34:ca:87:35:7e:88:39:40:eb:43:50:9c:d3:1c:8d:c5:
22:88:c4:de:b4:0a:80:48:82:d9:c9:0e:34:95:62:2d:64:42:
6e:29:cc:54:6a:0f:12:10:24:39:ea:b7
И пример сертификата клиента:
$ openssl x509 -in crt.pem -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
a1:52:3a:0b:29:72:8b:43:68:b2:10:8e:35:c8:15:91
Signature Algorithm: ecdsa-with-SHA384
Issuer: C = US, ST = CA, L = Los Angeles, O = XXXX, CN = org302.XXXXX.com
Validity
Not Before: Oct 27 22:49:40 2019 GMT
Not After : Nov 16 22:49:40 2021 GMT
Subject: C = US, ST = CA, L = Los Angeles, O = OPHQ, OU = Q, CN = xxx443.org302.XXXX.local
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
pub:
04:2f:9e:6e:e5:b4:62:a3:fa:57:4c:15:dd:ac:08:
bd:eb:fb:1c:36:09:af:f0:5c:69:2d:9d:b3:a1:61:
59:6d:f8:8e:09:a0:72:e5:12:54:33:db:2a:fe:1b:
c0:5e:24:b8:20:92:07:d1:8d:6f:3a:73:6d:56:de:
b6:2f:03:5a:1e
ASN1 OID: prime256v1
NIST CURVE: P-256
X509v3 extensions:
X509v3 Basic Constraints: critical
CA:FALSE
X509v3 CRL Distribution Points:
Full Name:
URI:http://crl.prod.XXXX.com/c49c8c7872647cd6ee67d30f19341a68.crl
X509v3 Subject Alternative Name: critical
DNS:xxx443.org302.XXX.local, DNS:*.xxx443.org302.XXXX.local
X509v3 Extended Key Usage:
TLS Web Server Authentication, TLS Web Client Authentication
Signature Algorithm: ecdsa-with-SHA384
30:65:02:31:00:9a:81:c4:e1:c5:38:48:94:89:a9:c1:96:93:
1e:57:75:18:5b:04:ed:c9:c8:41:a4:a4:d5:ee:3a:36:98:fc:
af:15:09:d4:b8:a3:be:2b:61:00:b2:55:1a:77:46:32:4d:02:
30:45:63:43:9f:f8:f8:72:e0:f6:94:c8:10:1b:ac:aa:9c:22:
62:00:0b:14:16:6e:20:1a:cd:1c:a2:c3:85:d7:6d:b8:ff:c0:
d5:93:0e:87:a2:1f:d9:99:48:eb:83:6b:31
Это не проблема OpenVPN, а скорее проблема OpenSSL (и, возможно, это даже не проблема в OpenSSL, а скорее решение не поддерживать плохих идей больше нет). Я думаю эта проблема решает ее лучше всего, и в основном она сводится к тому, чтобы «прекратить использование явных параметров кривой в ваших сертификатах; они никогда не были хорошей идеей , и мы не собираемся поддерживать их больше ".
Что касается того, почему вы видите это с OpenVPN 2.4.8, а не с более ранними версиями, я предполагаю (и это все, что может быть, поскольку вы не предоставили достаточно информации, чтобы сказать наверняка), что ваши более ранние версии OpenVPN построены на OpenSSL 1.0.2, который действительно (пытался) поддерживать явные параметры, в то время как их поддержка была прекращена в серии 1.1.0.