Можно ли разрешить и SSLv3, и TLS на одном порту с HAProxy? - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь настроить конфигурацию в HAProxy, связывая один порт с протоколами TLS и SSLv3.

Я пробовал эти настройки отдельно (я не использую 3 инструкции связывания в одном интерфейсе):

# Ciphers : AES256-GCM-SHA384:AES256-SHA256:AES256-SHA
bind *:5000 ssl crt /home/user/crt/certificate.pem
bind *:5000 ssl crt /home/user/crt/certificate.pem force-sslv3 force-tlsv10
bind *:5000 ssl crt /home/user/crt/certificate.pem ssl-min-ver SSLv3 ssl-max-ver TLSv1.0

Но пока работает только TLSv1.0. Однако как только я отказываюсь от поддержки TLSv1.0 (ie. Я использую только force-sslv3 или ssl-max-ver SSLv3), SSLv3 отлично работает с тем же сертификатом.

Я использую openssl для тестирования своих конфигурация:

openssl s_client -connect server:ip -ssl3

CONNECTED(00000003)
139657675302816:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:s3_pkt.c:1493:SSL alert number 40
139657675302816:error:1409E0E5:SSL routines:ssl3_write_bytes:ssl handshake failure:s3_pkt.c:659:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 0 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : SSLv3
    Cipher    : 0000
    Session-ID:
    Session-ID-ctx:
    Master-Key:
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    Start Time: 1590687931
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
---

Я что-то упустил? Вот моя версия openssl и моя версия haproxy:

openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017
haproxy -vv
HA-Proxy version 1.8.23 2019/11/25
Copyright 2000-2019 Willy Tarreau <willy@haproxy.org>

Build options :
  TARGET  = linux2628
  CPU     = generic
  CC      = gcc
  CFLAGS  = -O2 -g -fno-strict-aliasing -Wdeclaration-after-statement -fwrapv -Wno-format-truncation -Wno-null-dereference -Wno-unused-label -Wno-stringop-overflow
  OPTIONS = USE_ZLIB=1 USE_OPENSSL=1 USE_SYSTEMD=1 USE_PCRE=1

Default settings :
  maxconn = 2000, bufsize = 16384, maxrewrite = 1024, maxpollevents = 200

Built with OpenSSL version : OpenSSL 1.0.2k-fips  26 Jan 2017
Running on OpenSSL version : OpenSSL 1.0.2k-fips  26 Jan 2017
OpenSSL library supports TLS extensions : yes
OpenSSL library supports SNI : yes
OpenSSL library supports : SSLv3 TLSv1.0 TLSv1.1 TLSv1.2
Built with transparent proxy support using: IP_TRANSPARENT IPV6_TRANSPARENT IP_FREEBIND
Encrypted password support via crypt(3): yes
Built with multi-threading support.
Built with PCRE version : 8.32 2012-11-30
Running on PCRE version : 8.32 2012-11-30
PCRE library supports JIT : no (USE_PCRE_JIT not set)
Built with zlib version : 1.2.7
Running on zlib version : 1.2.7
Compression algorithms supported : identity("identity"), deflate("deflate"), raw-deflate("deflate"), gzip("gzip")
Built with network namespace support.

Available polling systems :
      epoll : pref=300,  test result OK
       poll : pref=200,  test result OK
     select : pref=150,  test result OK
Total: 3 (3 usable), will use epoll.

Available filters :
    [SPOE] spoe
    [COMP] compression
    [TRACE] trace

Заранее спасибо!

...