Я запускаю 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 из исходников. Я также могу установить любые флаги во время компиляции:
Вот то, что я считаю соответствующими частями файла 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 во время компиляции или он изменялся во время выполнения на сервере? Какие разделы и ценности?
Похоже, вам удалось объединить свой патч с 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