Назад | Перейти на главную страницу

настроить формат 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. Альпийский 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 и т. Д., А иногда они отсутствуют. Так что я не думаю, что это жизнеспособное решение.

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

Похоже, вам удалось объединить свой патч с 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