>source

Hi 우리는 HAPROXY 2.1.4를 자체 클라이언트와 서버 시스템 (하이로드 머신, 항상 바쁜)과 요청을 HTTP /1.1 및 HTTP /2.0과 혼합 할 수 있습니다. 우리는 프런트 엔드에서 SSL 핸드 셰이크 실패를 많이 마주보고 있습니다. RSYSLOG를 사용하여 프록시 로그를 사용하도록 설정하고 오류를 따르고 오류를 입력 할 수 있습니다.

Aug  5 18:55:35 localhost haproxy[40308]: 127.0.0.1:55442 [05/Aug/2020:18:55:35.364] frontend/1: SSL handshake failure
Aug  5 18:56:20 localhost haproxy[40308]: 204.xx.xx.xx:45474 [05/Aug/2020:18:56:16.761] frontend/1: Connection closed during SSL handshake
Aug  5 18:56:22 localhost haproxy[40308]: 204.xx.xx.xx:52088 [05/Aug/2020:18:56:19.403] frontend/1: Connection closed during SSL handshake
Aug  5 18:56:33 localhost haproxy[40308]: 127.0.0.1:42470 [05/Aug/2020:18:56:33.933] frontend/1: SSL handshake failure
Aug  5 18:56:33 localhost haproxy[40308]: 127.0.0.1:42472 [05/Aug/2020:18:56:33.944] frontend/1: SSL handshake failure

소스 IP에는 127.0.0.1로 소스 IP가 있지만 프록시가 SSL Terminator로서 프록시와 백엔드간에 일반 텍스트 연결을 수행하고 있습니다. 이는 Haproxy에서 자세한 로그를 얻을 수 없었습니다. 내 구성은 다음과 같습니다.

global
   log         127.0.0.1 local2
   chroot /var/lib/haproxy
   maxconn 200000
   user test
   group testsending
   daemon
tune.ssl.cachesize 200000
#tune.h2.max-concurrent-streams 10
ssl-dh-param-file /etc/haproxy/dhparam.pem
#Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
#Obtained from https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=haproxy
ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
ssl-default-bind-options no-sslv3 no-tlsv10 no-tlsv11
ssl-default-server-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
ssl-default-server-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
ssl-default-server-options no-sslv3 no-tlsv10 no-tlsv11
defaults
    log     global
    maxconn 20000
    mode    http
    option httplog
    option dontlog-normal
    option logasap
    retries 3
    retry-on all-retryable-errors
    option log-separate-errors
    timeout connect     5s
    timeout client     60s
    timeout server    450s
frontend    frontend_haproxy
     option forwardfor
     capture request header MONITORID len 64
     capture response header MONITORID len 64
     log-format "%ci:%cp\ [%t]\ %f\ %b/%s\ %Tq/%Tw/%Tc/%Tr/%Tt\ %ST\ %B\ %CC\ %CS\ %tsc\ %ac/%fc/%bc/%sc/%rc\ %sq/%bq\ Reqid:%hr\ Resid:%hs\ %{+Q}r\ %sslv\ %sslc"
     bind    *:8088  ssl crt /etc/haproxy/haproxy.pem alpn h2,http/1.1
     default_backend backend_eumagent
 backend     backend_eumagent
     timeout server  420000
     fullconn 2000
     server tomcat localhost:9099 check

및 haproxy -vv의 출력,

HA-Proxy version 2.1.4 2020/04/02 -https://haproxy.org/
 Status: stable branch -will stop receiving fixes around Q1 2021.
 Known bugs: http://www.haproxy.org/bugs/bugs-2.1.4.html
 Build options :
   TARGET= linux-glibc
   CPU = generic
   CC  = gcc
   CFLAGS= -O2 -g -fno-strict-aliasing -Wdeclaration-after-statement -fwrapv -Wno-unused-label -Wno-sign-compare -Wno-unused-parameter -Wno-old-style-declaration -Wno-ignored-qualifiers -Wno-clobbered -Wno-missing-field-initializers -Wtype-limits
   OPTIONS= USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1
 Feature list : +EPOLL -KQUEUE -MY_EPOLL -MY_SPLICE +NETFILTER +PCRE -PCRE_JIT -PCRE2 -PCRE2_JIT +POLL -PRIVATE_CACHE +THREAD -PTHREAD_PSHARED -REGPARM -STATIC_PCRE -STATIC_PCRE2 +TPROXY +LINUX_TPROXY +LINUX_SPLICE +LIBCRYPT +CRYPT_H -VSYSCALL +GETADDRINFO +OPENSSL -LUA +FUTEX +ACCEPT4 -MY_ACCEPT4 +ZLIB -SLZ +CPU_AFFINITY +TFO +NS +DL +RT -DEVICEATLAS -51DEGREES -WURFL +SYSTEMD -OBSOLETE_LINKER +PRCTL +THREAD_DUMP -EVPORTS
 Default settings :
   bufsize= 16384, maxrewrite= 1024, maxpollevents= 200
 Built with multi-threading support (MAX_THREADS=64, default=6).
 Built with OpenSSL version : OpenSSL 1.1.1c  28 May 2019
 Running on OpenSSL version : OpenSSL 1.1.1c  28 May 2019
 OpenSSL library supports TLS extensions : yes
 OpenSSL library supports SNI : yes
 OpenSSL library supports : TLSv1.0 TLSv1.1 TLSv1.2 TLSv1.3
 Built with network namespace support.
 Built with transparent proxy support using: IP_TRANSPARENT IPV6_TRANSPARENT IP_FREEBIND
 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)
 Encrypted password support via crypt(3): yes
 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")
 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 multiplexer protocols :
 (protocols marked as <default>      cannot be specified using 'proto' keyword)
               h2 : mode=HTTP       side=FE|BE     mux=H2
             fcgi : mode=HTTP       side=BE        mux=FCGI
        <default>      : mode=HTTP       side=FE|BE     mux=H1
        <default>      : mode=TCP        side=FE|BE     mux=PASS
 Available services : none
 Available filters :
  [SPOE] spoe
  [CACHE] cache
  [FCGI] fcgi-app
  [TRACE] trace
  [COMP] compression

Java 8을 사용하여 Apache (HTTP1.1) 및 Jetty (HTTP2) HttpClients에서 HAPRooxy 요청을 보내고 Java 8을 사용하여 HttpClients는 Java 11을 사용하여 실행중인 Apache Tomcat 9.0.30+입니다. 모든 시스템은 CentOS 7.x 버전입니다.

나는 또한 도움을 요청했다

친절 하게이 문제를 디버그하는 데 도움이됩니다. 사전에 고마워

127.0.0.1의 여러 1 분 지연 SSL 핸드 셰이크 오류 오류가 심 하트 비트 또는 모니터링 요청처럼 보입니다. Heepalived, Linux-HA의 하트 비트 또는 Haproxy에 대해 실행되는 데몬 (예 : Nagios, Munin 또는 Zabbix)을 모니터링하고 있습니까?

mforsetti2021-04-22 15:54:38

아니요, 하나의 Tomcat 인스턴스 만 HAPRooxy 뒤에 실행되고 일반 텍스트 모드에서 실행 중입니다. 그래서 SSL 핸드 셰이크는 프록시와 백엔드 사이에서 발생하지 않아야합니다. 나는 SSL 핸드 셰이크 실패, 자세한 로그를 얻는 어떤 방법으로 어떤 방법 으로든지 뭐지 못합니까?

Zyber2021-04-22 15:54:38

이것은 TLS1.2 이상을 지원하지 않는 일부 클라이언트처럼 보입니다.

Orphans2021-04-22 19:16:14
  • 이전 Set-OwamailBoxPolicy를 사용하여 OWA 표시등을 사용하지 않도록 설정 한 후 OWA 라이트를 설정 한 사용자는 OWA에 대한 액세스를 되 찾을 수 있습니까?
  • 다음 linux : 루트 사용자 홈 디렉터가 /집에없는 이유는 무엇입니까?