Move ../test/recipes/80-test_ssl_new.t outside of the build root. That means 
"throw out". rm -f ../test/recipes/80-test_ssl_new.t also works.




‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Tuesday, September 15, 2020 8:28 PM, vcjouni <[email protected]> 
wrote:

> Hi,
>
> I tested for openssl-1.1.1g.tar.gz from openssl.org in Linux Mint 19.3:
>
> $ patch -p1 < reorder-sigalgs.patch
> patching file ssl/t1_lib.c
>
> ./config
>
> make
>
> make test
>
> Test Summary Report
>
> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> ../test/recipes/80-test_ssl_new.t                (Wstat: 256 Tests: 29
> Failed: 1)
>   Failed test:  20
>   Non-zero exit status: 1
> Files=155, Tests=1466, 76 wallclock secs ( 1.74 usr  0.10 sys + 75.96
> cusr  9.72 csys = 87.52 CPU)
> Result: FAIL
> Makefile:207: recipe for target '_tests' failed
>
> What did you mean by thrown that test out? Now that test failed.
>
> Br,
>
> Jouni
>
> On 9/15/20 4:36 PM, Bruno Henc wrote:
>
> > Hi,
> > Last time I saw this error it involved TLS decryption by firewalls that 
> > didn't support RSA-PSS. Why they blow up
> > when the new, more secure RSA-PSS signature algorithms are used beats me, 
> > but it's principally on them for not supporting the latest IETF standards.
> > Attached is a patch that reorders the signature algorithms
> > in openssl 1.1.1 so that the pkcs1 ones are first. Also,
> > the test/recipes/80-test_ssl_new.t test needs to be thrown out for this to 
> > work. I would recommend trying to get this to work without docker and 
> > kubernetes first, and using the -d haproxy option to get more detailed 
> > OpenSSL logging.
> > It is also likely you will need to set ssl-default-bind-curves since the 
> > firewalls in question do not support curve x25519 either. This is a HAProxy 
> > 2.2 option (https://www.haproxy.com/blog/announcing-haproxy-2-2/). 
> > ssl-default-bind-curves P-256 should/could the trick, although tuning this 
> > to include all supported curves should be done for production traffic.
> > As for implementing this in HAProxy, SSL_CTX_set1_sigalgs_list could be 
> > used in the part of the code that initializes the TLS connection, but it 
> > seems that somewhere in the handshake code the signature algorithms get 
> > renegotiated.
> > I haven't had any luck in identifying where exactly this renegotiation 
> > happens. Someone else might have more luck in writing up a patch that adds 
> > a "sigalgs" or similarly named option to adjust the signature algorithms.
> > Regards,
> > Bruno
> > ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
> > On Tuesday, September 15, 2020 1:45 PM, vcjouni 
> > [email protected] wrote:
> >
> > > Hi!
> > > We can not get haproxy-ingress to work with TLS authentication. Only
> > > option to get this work is by using force-tlsv12 and then only Chrome
> > > works. Problem is TLS handshake decrypt error when using RSA-PSS
> > > signature algorithm, handshake fails every time. When we use
> > > force-tlsv12, only Chrome will change signature back to pkcs1 and then
> > > session is ok. Safari, Edge or IE does not work with any option and they
> > > keep offering RSA-PSS signature.
> > > This same CA bundle and cards has been used before with citrix netscaler
> > > ingress controller without problems (TLSv1.2). Smart cards are
> > > government provided FINEID cards, so we can't test them command line,
> > > only by using those cards with browser.
> > > I already discussed with haproxy-ingress builder jcmoraisjr and he
> > > suggested us to ask from haproxy mailing list.
> > > Docker image: image: quay.io/jcmoraisjr/haproxy-ingress
> > > haproxy -vv
> > > ============
> > > HA-Proxy version 2.0.17 2020/07/31 - https://haproxy.org/
> > > Build options :
> > >   TARGET  = linux-glibc
> > >   CPU     = generic
> > >   CC      = gcc
> > >   CFLAGS  = -O2 -g -fno-strict-aliasing -Wdeclaration-after-statement
> > > -fwrapv -Wno-address-of-packed-member -Wno-unused-label
> > > -Wno-sign-compare -Wno-unused-parameter -Wno-old-style-declaration
> > > -Wno-ignored-qualifiers -Wno-clobbered -Wno-missing-field-initializers
> > > -Wno-implicit-fallthrough -Wno-stringop-overflow -Wno-cast-function-type
> > > -Wtype-limits -Wshift-negative-value -Wshift-overflow=2
> > > -Wduplicated-cond -Wnull-dereference
> > >   OPTIONS = USE_PCRE2=1 USE_PCRE2_JIT=1 USE_GETADDRINFO=1 USE_OPENSSL=1
> > > USE_LUA=1 USE_ZLIB=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=2).
> > > Built with OpenSSL version : OpenSSL 1.1.1g  21 Apr 2020
> > > Running on OpenSSL version : OpenSSL 1.1.1g  21 Apr 2020
> > > OpenSSL library supports TLS extensions : yes
> > > OpenSSL library supports SNI : yes
> > > OpenSSL library supports : TLSv1.0 TLSv1.1 TLSv1.2 TLSv1.3
> > > Built with Lua version : Lua 5.3.5
> > > Built with network namespace support.
> > > Built with transparent proxy support using: IP_TRANSPARENT
> > > IPV6_TRANSPARENT IP_FREEBIND
> > > Built with zlib version : 1.2.11
> > > Running on zlib version : 1.2.11
> > > Compression algorithms supported : identity("identity"),
> > > deflate("deflate"), raw-deflate("deflate"), gzip("gzip")
> > > Built with PCRE2 version : 10.35 2020-05-09
> > > PCRE2 library supports JIT : yes
> > > Encrypted password support via crypt(3): yes
> > > Built with the Prometheus exporter as a service
> > > 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=HTX        side=FE|BE     mux=H2
> > >               h2 : mode=HTTP       side=FE        mux=H2
> > >        <default> : mode=HTX        side=FE|BE     mux=H1
> > > <default> : mode=TCP|HTTP   side=FE|BE     mux=PASS
> > > Available services :
> > >     prometheus-exporter
> > > Available filters :
> > >     [SPOE] spoe
> > >     [COMP] compression
> > >     [CACHE] cache
> > >     [TRACE] trace
> > > haproxy configmap:
> > > apiVersion: v1
> > > kind: ConfigMap
> > > metadata:
> > >   name: haproxy-ingress
> > >   namespace: ingress-controller
> > > data:
> > >   ssl-headers-prefix: HTTP_X_SSL
> > >   max-connections: "10000"
> > > #  ssl-options: ssl-min-ver TLSv1.2 no-tls-tickets
> > > #  ssl-options: force-tlsv12 no-tls-tickets
> > >   ssl-options: no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets
> > >   ssl-cipher-suites:
> > > TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
> > >   #  ssl-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-ciphers:
> > > RSA+SHA256:RSA+SHA512:RSA+SHA384:ECDSA+SHA256:ECDSA+SHA512:ECDSA+SHA384
> > >   ssl-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-dh-default-max-size: "2048"
> > >   syslog-endpoint: "10.32.121.202:514"
> > >   syslog-length: "2048"
> > >   http-log-format: "%ci:%cp\\ [%t]\\ %ft\\ %b/%s\\
> > > %Tq/%Tw/%Tc/%Tr/%Tt\\ %ST\\ %B\\ %CC\\ \\ %CS\\ %tsc\\
> > > %ac/%fc/%bc/%sc/%rc\\ %sq/%bq\\ %hr\\ %hs\\ %{+Q}r\\ ssl_version=%sslv\\
> > > ssl_cypher=%sslc}\\ C_VERIFY=%{+Q}[ssl_c_verify]\\
> > > C_ERR=%{+Q}[ssl_c_err]\\ C_S_DN=%{+Q}[ssl_c_s_dn]\\
> > > C_i_DN=%{+Q}[ssl_c_i_dn]\\ C_key_Alg=%{+Q}[ssl_c_key_alg]\\
> > > C_USED_Bool=%{+Q}[ssl_c_used]\\ C_VERSION=%{+Q}[ssl_c_version]\\
> > > F_i_DN=%{+Q}[ssl_f_i_dn]\\ F_KEY_ALG=%{+Q}[ssl_f_key_alg]\\
> > > F_S_DN=%{+Q}[ssl_f_s_dn]\\ F_SIG_ALG=%{+Q}[ssl_f_sig_alg]\\
> > > F_VERSION=%{+Q}[ssl_f_version]\\ FC=%{+Q}[ssl_fc]\\
> > > FC_ALPN=%{+Q}[ssl_fc_alpn]\\ FC_CIPHER=%{+Q}[ssl_fc_cipher]\\
> > > CIPHERLIST=%{+Q}[ssl_fc_cipherlist_str]\\
> > > FC_HAS_CRT=%{+Q}[ssl_fc_has_crt]\\
> > > FC_HAS_EARLY_Bool=%{+Q}[ssl_fc_has_early]\\
> > > FC_HAS_SNI=%{+Q}[ssl_fc_has_sni]\\
> > > FC_IS_RESUMED_Bool=%{+Q}[ssl_fc_is_resumed]\\ FC_NPN=%{+Q}[ssl_fc_npn]\\
> > > FC_PROTOCOL=%{+Q}[ssl_fc_protocol]\\ FC_SNI=%{+Q}[ssl_fc_sni]\\
> > > C_CA_ERR=%[capture.req.hdr(2)]\\ C_CA_ERR_DEPTH=%[capture.req.hdr(3)]\\
> > > FC_CIPHER=%[capture.req.hdr(4)]"
> > >   https-log-format: "%ci:%cp\\ [%t]\\ %ft\\ %b/%s\\ %ST\\ %B\\ %tsc\\
> > > %ac/%fc/%bc/%sc/%rc\\ %sq/%bq\\ %hr\\ %hs"
> > >   config-global: |
> > >   config-frontend: |
> > >     capture request header Host len 100
> > >     capture request header User-Agent len 200
> > >     http-request capture ssl_c_ca_err len 2
> > >     http-request capture ssl_c_ca_err_depth len 2
> > >     http-request capture ssl_fc_cipher len 64
> > > config-backend: |
> > >     http-request set-header X_SSL_CLIENT_VERIFY %[ssl_c_verify]
> > >     http-request set-header X_SSL_CLIENT_DN %{+Q}[ssl_c_s_dn]
> > >     http-request set-header X_SSL_ISSUER_DN %{+Q}[ssl_c_i_dn]
> > > Ingress:
> > > annotations:
> > >     kubernetes.io/ingress.class: haproxy
> > >     ingress.kubernetes.io/auth-tls-secret:
> > > default/staging-client-certificate-ca
> > >     ingress.kubernetes.io/auth-tls-verify-client: optional
> > > Any help?
> > > Br,
> > > Jouni



Reply via email to