Ошибка OpenSSL «неправильная кривая» в opnvpn 2.4.8

Я пытаюсь обновить наш сервер 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
0
задан 6 March 2020 в 04:38
1 ответ

Это не проблема OpenVPN, а скорее проблема OpenSSL (и, возможно, это даже не проблема в OpenSSL, а скорее решение не поддерживать плохих идей больше нет). Я думаю эта проблема решает ее лучше всего, и в основном она сводится к тому, чтобы «прекратить использование явных параметров кривой в ваших сертификатах; они никогда не были хорошей идеей , и мы не собираемся поддерживать их больше ".

Что касается того, почему вы видите это с OpenVPN 2.4.8, а не с более ранними версиями, я предполагаю (и это все, что может быть, поскольку вы не предоставили достаточно информации, чтобы сказать наверняка), что ваши более ранние версии OpenVPN построены на OpenSSL 1.0.2, который действительно (пытался) поддерживать явные параметры, в то время как их поддержка была прекращена в серии 1.1.0.

0
ответ дан 30 March 2020 в 01:31

Теги

Похожие вопросы