웹사이트 검색

HAProxy에서 CA SSL 인증서를 구성하는 방법


HAProxy는 TCP 및 HTTP 애플리케이션에 고가용성과 로드 밸런싱 기능을 제공하는 널리 사용되는 안정적인 고성능 역방향 프록시입니다. 기본적으로 OpenSSL로 컴파일되므로 SSL 종료를 지원하여 웹사이트/애플리케이션 스택이 "웹 항목 서버" 또는 애플리케이션 액세스 게이트웨이 간의 트래픽을 암호화하고 해독할 수 있습니다. 서버 및 클라이언트 애플리케이션.

이 가이드에서는 HAPorxy에서 CA SSL 인증서를 구성하는 방법을 보여줍니다. 이 가이드에서는 귀하가 이미 CA로부터 인증서를 받았으며 이를 HAProxy 서버에 설치 및 구성할 준비가 되었다고 가정합니다.

예상되는 파일은 다음과 같습니다.

  • 인증서 자체.
  • 번들 또는 체인이라고도 하는 중간 인증서입니다.
  • 루트 CA(사용 가능한 경우) 및
  • 개인 키.

PEM 형식의 SSL 인증서 파일 생성

HAProxy에서 CA 인증서를 구성하기 전에 HAProxy에는 단일 .pem 파일이 필요하다는 점을 이해해야 합니다. 위의 모든 파일 내용이 다음 순서로 연결되어 포함되어야 합니다.

  • .key로 끝나는 개인 키(파일의 시작이나 끝에 올 수 있음).
  • 그 뒤에는 SSL 인증서(보통 .crt로 끝남)가 옵니다.
  • 그런 다음 CA-번들(보통 .ca-bundle로 끝남) 및
  • 루트 CA(사용 가능한 경우)

.pem 파일을 생성하려면 인증서 파일이 있는 디렉터리(예: ~/Downloads)로 이동한 후 다음과 같이 cat 명령을 실행합니다(파일 이름을 그에 따라 바꿉니다).

cat example.com.key STAR_example_com/STAR_example_com.crt STAR_example_com/STAR_example_com.ca-bundle > example.com.pem

HAProxy에서 PEM SSL 인증서 구성

다음으로, 표시된 대로 scp 명령을 사용하여 방금 생성된 .pem 인증서 파일을 HAProxy 서버에 업로드합니다(sysadmin192.168. 10.24를 각각 원격 서버 사용자 이름과 IP 주소로 바꿉니다):

scp example.com.pem  [email :/home/sysadmin/

그런 다음 mkdir 명령을 사용하여 인증서 .pem 파일이 저장될 디렉터리를 만들고 해당 디렉터리에 파일을 복사합니다.

sudo mkdir -p /etc/ssl/example.com/
sudo cp example.com.pem /etc/ssl/example.com/

그런 다음 HAProxy 구성 파일을 열고 ssl 및 crt 매개변수를 사용하여 프런트엔드 리스너 섹션 아래에 인증서를 구성합니다. 전자는 SSL 종료를 활성화하고 후자는 인증서 파일의 위치를 지정합니다.

frontend http_frontend
      mode http
      bind *:80
      bind *:443 ssl crt  /etc/ssl/example.com/example.com.pem alpn h2,http/1.1
     redirect scheme https code 301 if !{ ssl_fc }
      default_backend http_servers

SSL/TLS의 특정 버전에서는 취약점이 발견되었기 때문에 현재 사용이 권장되지 않습니다. 지원되는 SSL 버전을 제한하려면 다음과 같이 ssl-min-ver 매개변수를 추가할 수 있습니다.

bind *:443 ssl crt  /etc/ssl/example.com/example.com.pem alpn h2,http/1.1   ssl-min-ver TLSv1.2

HTTP를 HTTPS로 리디렉션하도록 HAProxy 구성

웹사이트가 HTTPS를 통해서만 액세스할 수 있도록 하려면 사용자가 다음을 시도할 경우 모든 HTTP 트래픽을 HTTPS로 리디렉션하도록 HAProxy를 활성화해야 합니다. HTTP(포트 80)를 통해 액세스합니다.

위 구성에 다음 줄을 추가합니다.

redirect scheme https code 301 if !{ ssl_fc }
OR
http-request redirect scheme https unless { ssl_fc }

이제 프런트엔드 섹션이 이 샘플 구성의 섹션과 같아야 합니다.

frontend http_frontend
      mode http
      bind *:80
      bind *:443 ssl crt  /etc/ssl/example.com/example.com.pem alpn h2,http/1.1  ssl-min-ver TLSv1.2
      redirect scheme https code 301 if !{ ssl_fc }
      default_backend   http_servers

backend http_servers
      mode http
      balance roundrobin
      option httpchk HEAD /
      http-response set-header X-Frame-Options SAMEORIGIN
      http-response set-header X-XSS-Protection 1;mode=block
      http-response set-header X-Content-Type-Options nosniff
      default-server check maxconn 5000
      server http_server1 10.2.1.55:80

구성 파일을 저장하고 닫습니다.

그런 다음 다음 명령을 사용하여 구문이 올바른지 확인하십시오.

sudo haproxy -f /etc/haproxy/haproxy.cfg -c

구성 파일이 유효하면 systemctl 명령을 사용하여 haproxy 서비스를 다시 로드하여 구성의 최근 변경 사항을 선택합니다.

sudo systemctl reload haproxy

마지막으로, 웹 브라우저에서 웹사이트에 액세스하여 전체 설정을 테스트하고 인증서가 제대로 로드되고 브라우저에 "연결이 안전합니다"라고 표시되는지 확인하세요!

그게 다야! 이 가이드가 HAProxy 로드 밸런서 소프트웨어에서 SSL 인증서를 구성하는 데 도움이 되기를 바랍니다. 오류가 발생하면 아래 피드백 양식을 통해 알려주십시오. 기꺼이 도와드리겠습니다.