Я пытаюсь настроить завершение SSL с помощью haproxy в качестве тестового стенда. Он хорошо обслуживает тестовую страницу на порте 80, но на порте 443 хром показывает предупреждение о том, что ssl-соединение небезопасно, и значок с перечеркнутым https.
Я создал сертификат с помощью следующих команд:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout web.key -out web.crt
cat web.crt web.key > web.pem
с Common имя определено как haproxy.com
Также я помещаю haproxy.com
в мой / etc / hosts
файл
Вот отрывок из haproxy:
frontend main
bind *:80
bind *:443 ssl crt /root/web.pem
mode http
default_backend app
backend app
balance roundrobin
server app1 127.0.0.1:8080 check
server app2 127.0.0.1:8081 check
Как я могу управлять этим предупреждением?
Самозаверяющий сертификат не пользуется доверием ни в одном браузере, так как вы являетесь тем, кто подписал сертификат, а не центром сертификации. Вы можете импортировать корневой сертификат в хранилище доверенных сертификатов браузера, но это сделает ваше соединение доверенным, а другие получат такое же предупреждающее сообщение.
Даже с официальным сертификатом, подписанным CA , я получал предупреждение от Chrome о небезопасном соединении, пока я не добавил настройку X-Forwarded-Proto в свой интерфейс. Упрощенный пример, когда haproxy используется в качестве внешнего интерфейса SSL localhost для внутреннего прослушивания Tomcat (без SSL) на порту 8080:
frontend web_plainhttp
bind *:80
redirect prefix https://www.example.com code 301
frontend web_https
bind *:443 ssl crt www.example.com_SSLcert.pem
http-request set-header X-Forwarded-Proto https
option forwardfor
default_backend w_website
backend w_website
server w_server 127.0.0.1:8080
просто удалите строку «http-request set-header X-Forwarded-Proto https», и Chrome покажет соединение как небезопасно ...действительно, на HTTP-ответы влияет внутренний сервер, возвращающий http или https в заголовках / содержимом в соответствии с входящим протоколом