настроить формат haproxy X-ForwardedFor ssl_c_s_dn во время завершения SSL

Я запускаю haproxy в контейнере Alpine Docker. Он выполняет завершение SSL для https и вставляет клиентское DN в заголовок X-ForwardedFor HTTP. Но формат, который он использует для клиентского DN, не поддерживается моим приложением.

Могу ли я как-нибудь изменить формат, например, используя openssl.cnf? Люди, видимо, так меняют настройки алгоритма шифрования. Могу ли я также изменить свой формат DN?

Это формат, в котором мне нужно, чтобы DN моего сертификата выглядело в заголовке X-ForwardedFor. Это скорее LDAP-е.

CN=Jane Smith,OU=org1,OU=org2,O=myorg,C=AU

Но haproxy внедряет формат, скорее похожий на ASN.1

/C=AU/O=myorg/OU=org2/OU=org1/CN=Jane Smith

Это версии программного обеспечения. Их можно изменить, так как я компилирую haproxy из исходников. Я также могу установить любые флаги во время компиляции:

  1. Haproxy 2.0
  2. Alpine 3.10
  3. openssl 1.1.1

Вот то, что я считаю соответствующими частями файла haproxy.cfg.

frontend fe
    mode http
    bind *:443 ssl no-sslv3 no-tls10 no-tlsv11 crt /certs/mycert ca-file /certs/myca
    option forwardfor
    http-request set-header X-ForwardedFor %{+Q+E}[ssl_c_s_dn]
    default_backend be

backend be 
   balance source
   mode http
   server server1 IP:PORT ca-file /certs/myca crt /certs/mycert ssl verify none

Могу я что-нибудь сделать, чтобы изменить формат? Я пробовал использовать такую ​​задокументированную структуру:% {+ Q + E} [ssl_c_s_dn (CN)], но формат DN моего сертификата очень неорганизован. Невозможно предсказать, сколько может быть OU, C, O и т. Д., А иногда они отсутствуют. Так что я не думаю, что это жизнеспособное решение.

Я также рассмотрел, как этот вопрос: хеш-алгоритм haproxy tls настраивает поведение haproxy с настройками openssl. Могу я сделать это, чтобы получить DN в другом формате? Если да, то как? Я не уверен, что делать дальше. Нужно ли мне изменять openssl.cnf во время компиляции или он изменялся во время выполнения на сервере? Какие разделы и ценности?

0
задан 18 December 2019 в 23:36
1 ответ

Похоже, вам удалось объединить свой патч с HAProxy[1], и он будет выпущен каждый раз, когда выйдет 2.2.

Из документации 2.2[2] следует, что использование выглядит следующим образом

frontend fe
    mode http
    bind *:443 ssl no-sslv3 no-tls10 no-tlsv11 crt /certs/mycert ca-file /certs/myca
    option forwardfor
    http-request set-header X-ForwardedFor %{+Q+E}[ssl_c_s_dn(,0,rfc2253)]
    default_backend be

backend be 
   balance source
   mode http
   server server1 IP:PORT ca-file /certs/myca crt /certs/mycert ssl verify non

[1] https://git.haproxy.org/?p=haproxy.git;a=commit;h=71f829767d3a5f8e2f309862b1e606bb03323878

[2] http:/ /cbonte.github.io/haproxy-dconv/2.2/configuration.html#7.3.4-ssl_c_s_dn

0
ответ дан 31 March 2020 в 21:05

Теги

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