client-Zertifikat-Weiterleitung von haproxy tomcat

Habe ich mit httpd-offload mein SSL-Bearbeitung und weiterleiten von http-requests an tomcat via AJP. Ich bin nun auf haproxy statt httpd und HTTP anstelle von AJP. Ich bin in der Lage, eine Verbindung zu haproxy über https und eine entsprechende http-Anforderung kommen bei tomcat. wenn Sie versuchen, um überprüfen Sie die client-Zertifikat für meine tomcat-code nicht abrufen kann, der CN aus dem Zertifikat. Ich fügte hinzu, die folgenden Zeilen zum haproxy.cfg-in der Hoffnung, dass es vorwärts das client-Zertifikat-information im http-header:

http-request set-header X-SSL                       %[ssl_fc]
http-request set-header X-SSL-Client-Verify         %[ssl_c_verify]
http-request set-header X-SSL-Client-SHA1           %{+Q}[ssl_c_sha1]
http-request set-header X-SSL-Client-DN             %{+Q}[ssl_c_s_dn]
http-request set-header X-SSL-Client-CN             %{+Q}[ssl_c_s_dn(cn)]
http-request set-header X-SSL-Issuer                %{+Q}[ssl_c_i_dn]
http-request set-header X-SSL-Client-Not-Before     %{+Q}[ssl_c_notbefore]
http-request set-header X-SSL-Client-Not-After      %{+Q}[ssl_c_notafter]

Blick auf die capture-Datei, die für die http-Verbindung sehe ich die folgenden http-header:

GET /api/subscriber/count?_=1511258656303 HTTP/1.1
Host: 192.168.20.192
Accept: */*
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36
Referer: https://192.168.20.192/dashboard.jsp
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.8,he;q=0.6
Cookie: gsScrollPos-1158=0; gsScrollPos-536=0; gsScrollPos-873=2579; gsScrollPos-2263=0; gsScrollPos-472=0; gsScrollPos-468=; JSESSIONID=B433B96FB2616A8447703BFAE541DC2C
X-SSL: 1
X-SSL-Client-Verify: 0
X-SSL-Client-SHA1: 
X-SSL-Client-DN: 
X-SSL-Client-CN: 
X-SSL-Issuer: 
X-SSL-Client-Not-Before: 
X-SSL-Client-Not-After: 
X-Forwarded-Proto: https
X-Forwarded-For: ::ffff:192.168.12.171
Connection: close

wie Sie sehen können die Informationen zum Zertifikat ist leer.

Mache ich etwas falsch? gibt es etwas anderes erforderlich, um pass das Zertifikat unter tomcat?
alternativ kann dies gemacht werden, um die Arbeit mit AJP?

hier ist mein voller haproxy.cfg:

global
    log         127.0.0.1 local4

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

    # ssl ciphers and options
    ssl-default-bind-options no-sslv3
    ssl-default-bind-ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:ECDH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
    tune.ssl.default-dh-param 2048

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

frontend https
    mode http
    bind :::443 ssl crt /opt/vasona/CA/private/sa_bundle.pem ca-file /opt/vasona/CA/certs/crtServer.crt verify optional


    http-request set-header X-SSL                       %[ssl_fc]
    http-request set-header X-SSL-Client-Verify         %[ssl_c_verify]
    http-request set-header X-SSL-Client-SHA1           %{+Q}[ssl_c_sha1]
    http-request set-header X-SSL-Client-DN             %{+Q}[ssl_c_s_dn]
    http-request set-header X-SSL-Client-CN             %{+Q}[ssl_c_s_dn(cn)]
    http-request set-header X-SSL-Issuer                %{+Q}[ssl_c_i_dn]
    http-request set-header X-SSL-Client-Not-Before     %{+Q}[ssl_c_notbefore]
    http-request set-header X-SSL-Client-Not-After      %{+Q}[ssl_c_notafter]
    reqadd X-Forwarded-Proto:\ https
    default_backend tomcat-mgmt

backend tomcat-mgmt
    mode http
    option tcp-smart-connect
    server tomcat :8009

backend tomcat-cp-events
    mode http
    option tcp-smart-connect
    server tomcat :23237

bitte lassen Sie mich wissen, wenn sonstige Infos benötigt wird.
Vielen Dank,
Gidon

InformationsquelleAutor gmiller | 2017-11-21



One Reply
  1. 0

    stellt sich heraus, ich war mit dem falschen Zertifikat-Datei als ca-Datei. wenn Sie mit der richtigen pem-Datei die Informationen zum Zertifikat geht auf das backend korrekt.

    • Ich bin nicht immer alle relevanten Informationen aus den Protokollen. Die unten ist meine logs
    • Apr 24 15:26:57 QB-IPL-1205 haproxy[10265]: Connect from 127.0.0.1:46594 auf 127.0.0.1:443 (localhost/HTTP)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.