HAProxy에 SSL인증서를 적용했던 코드 정리입니다.
Virtualbox환경에서 openssl을 이용해서 직접 ssl인증서를 적용하는 예시입니다.
Linux서버에 이미 HAProxy가 설치되어있다고 가정하고 시작하겠습니다.
# 인증서를 담을 디렉터리 생성
mkdir /etc/haproxy/certs
cd /etc/haproxy/certs
# 키 생성
sudo openssl genrsa -out mydomain.key 2048
openssl x509 -req -days 365 -in mydomain.csr -signkey mydomain.key -out mydomain.crt
sudo bash -c 'cat mydomain.key mydomain.crt >> ./mydomain.pem'
vi /etc/haproxy/haproxy.cfg로 HAProxy 설정
frontend main
bind *:80
bind *:443 ssl crt /etc/haproxy/certs/mydomain.pem
reqadd X-Forward-Proto:\https
redirect scheme https code 301 if !{ ssl_fc }
acl url_static path_beg -i /static /images /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js
default_backend app
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend app
balance roundrobin
server app1 192.168.56.101:80 check
server app2 192.168.56.117:80 check
맨 밑에 server 옆에는 web을 띄어놓은 서버 두개를 두어 라운드로빈 방식으로 로드밸런싱 되게 하였습니다.
실제 공인기관에서 발급한 ssl인증서는 아니라서 적용해서 접속해보면 https에 빨간줄이 그어져있을 수 있습니다.
포트를 열고 HAProxy를 재시작하면 적용됩니다.
# 방화벽에 아래 포트를 열어줍니다.
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
# 방화벽을 리로드합니다.
sudo firewall-cmd --reload
# HAProxy를 재시작합니다.
sudo systemctl restart haproxy
# HAProxy가 잘 동작하는지 확인해보기
sudo systemctl status haproxy
참고
https://www.sslcert.co.kr/guides/HAProxy-SSL-Certificates-Install
https://www.tecmint.com/configure-ssl-certificate-haproxy
http://fosshelp.blogspot.com/2016/11/how-to-create-pem-file-for-haproxy.html