728x90
HAProxy에서 TLS/SSL 인증서를 생성하고 적용하는 방법
자가 서명된 인증서 생성
CA에서 발급받은 인증서가 없다면 테스트용이나 내부 용도로 자가 서명된 인증서를 생성할 수 있습니다.
1. 개인 키와 인증서 생성
- 개인 키와 자가 서명된 인증서를 생성합니다.
- 국가, 지역, 공통 이름(Common Name) 등과 같은 정보를 입력하라는 프롬프트가 나타납니다.
mkdir -p /etc/haproxy/ssl
openssl req \
-new \
-newkey rsa:2048 \
-days 365 \
-nodes \
-x509 \
-keyout /etc/haproxy/ssl/haproxy.key \
-out /etc/haproxy/ssl/haproxy.crt
Country Name (2 letter code) [AU]: ***KR***
State or Province Name (full name) [Some-State]: ***Seoul***
Locality Name (eg, city) []: ***Jongno-gu***
Organization Name (eg, company) [Internet Widgits Pty Ltd]: ***SangChul Blog***
Organizational Unit Name (eg, section) []: ***Infrastructure Team***
Common Name (e.g. server FQDN or YOUR name) []: ***sangchul.kr***
Email Address []: ***admin@sangchul.kr***
더보기
---
openssl req \
-newkey rsa:2048 \
-x509 \
-sha256 \
-days 3650 \
-nodes \
-out ha_sangchul_kr.crt \
-keyout ha_sangchul_kr.key \
-subj "/C=KR/ST=Seoul/L=Jongno-gu/O=SangChul Blog/OU=Infrastructure Team/CN=sangchul.kr"
---
2. 개인 키와 인증서를 PEM 파일로 결합
- HAProxy는 인증서와 개인 키가 하나의 PEM 파일에 포함되어 있어야 합니다.
cat /etc/haproxy/ssl/haproxy.crt /etc/haproxy/ssl/haproxy.key > /etc/haproxy/ssl/haproxy.pem
3. HAProxy 설정 파일 업데이트
- 생성한 인증서를 사용하도록 HAProxy 설정 파일(/etc/haproxy/haproxy.cfg)을 수정합니다.
vim /etc/haproxy/haproxy.cfg
# HTTP Server Frontend
frontend http-front
mode http
bind *:80
bind *:443 ssl crt /etc/haproxy/ssl/haproxy.pem ssl-min-ver TLSv1.2
# HTTPS 요청인지 확인
acl https_request ssl_fc
# HTTPS가 아닌 요청을 HTTPS로 리다이렉트
http-request redirect scheme https code 301 if !https_request
# 기본 백엔드
default_backend web-server-group
option forwardfor
# Backend for HTTP Server
backend web-server-group
mode http
balance roundrobin
option httpchk GET /
server web1 192.168.0.130:8081 check
server web2 192.168.0.130:8082 check
** 요청 URL을 기반으로 백엔드를 선택하는 L7 방식의 로드 밸런싱을 구현
인증 기관(CA)에서 발급받은 인증서 사용
CA에서 발급받은 인증서를 사용하는 경우, 다음 단계를 따릅니다.
1. 인증서 파일 준비
- 개인 키 : haproxy.key
- 인증서 : haproxy.crt
- CA 번들(CA Bundle) : ca-bundle.crt
2. 파일을 PEM 파일로 결합
- CA에서 발급받은 인증서와 CA 번들을 결합합니다.
cat haproxy.crt haproxy.key ca-bundle.crt > /etc/haproxy/ssl/haproxy.pem
- CA 번들이 없다면, 인증서와 개인 키만 결합합니다.
cat haproxy.crt haproxy.key > /etc/haproxy/ssl/haproxy.pem
3. HAProxy 설정 파일 업데이트
- CA에서 발급받은 인증서를 사용하도록 HAProxy 설정을 수정합니다.
vim /etc/haproxy/haproxy.cfg
# HTTP Server Frontend
frontend http-front
mode http
bind *:80
bind *:443 ssl crt /etc/haproxy/ssl/haproxy.pem ssl-min-ver TLSv1.2
# HTTPS 요청인지 확인
acl https_request ssl_fc
# HTTPS가 아닌 요청을 HTTPS로 리다이렉트
http-request redirect scheme https code 301 if !https_request
# 기본 백엔드
default_backend web-server-group
option forwardfor
# Backend for HTTP Server
backend web-server-group
mode http
balance roundrobin
option httpchk GET /
server web1 192.168.0.130:8081 check
server web2 192.168.0.130:8082 check
HAProxy 설정 검증
haproxy -c -f /etc/haproxy/haproxy.cfg -V
HAProxy 설정 리로드
설정을 수정한 후 HAProxy를 리로드하여 변경 사항을 적용합니다.
sudo systemctl reload haproxy
또는
sudo systemctl restart haproxy
설정 확인
HAProxy 설정이 올바르게 적용되었는지 확인하는 방법입니다.
- 브라우저에서 https://your-domain.com으로 접속하여 인증서가 제대로 적용되었는지 확인합니다.
- curl이나 openssl 도구를 사용하여 인증서를 확인할 수도 있습니다.
curl -v https://your-domain.com
openssl s_client -connect your-domain.com:443
모든 설정이 제대로 되어 있다면 HTTPS를 통해 사이트에 접속할 수 있으며 인증서가 올바르게 제공됩니다.
728x90
'리눅스' 카테고리의 다른 글
[draft] 쿠버네티스 클러스터에서 Calico 네트워크 플러그인을 설치 (0) | 2024.08.14 |
---|---|
[draft] 쿠버네티스 클러스터를 구현하는 방법 (0) | 2024.08.14 |
[draft] 외부 etcd TLS 클러스터를 구성하고 kubeadm을 사용하여 쿠버네티스 클러스터를 설정하는 방법 (0) | 2024.08.09 |
[draft] CentOS 7에서 사용자 슬라이스 관련 메시지를 필터링하는 방법 (0) | 2024.08.07 |
[draft] 도메인 매핑과 도메인 리디렉션의 차이점 및 구현 방법 (0) | 2024.08.07 |