Haproxy에서 여러 SSL 인증서 구성


28

내 haproxy 인스턴스는 2 개의 도메인을 제공합니다 (주로 기본 사이트에서 XSS를 피하기 위해).

규칙은 다음과 같습니다

bind :443 ssl crt /etc/ssl/haproxy.pem

acl is_static   hdr_end(Host) -i example.com
acl is_api      hdr_end(Host) -i api.example.com
acl is_files    hdr_end(Host) -i example.io

redirect scheme https if !{ ssl_fc } is_static is_api

이제 SSL은 /etc/ssl/haproxy.pem기본 인증서로 사용 되며 이는 인증서가 example.com아닌 인증서입니다 example.io.

여러 도메인 이름에 대한 인증서를 어떻게 지정합니까?

답변:


60

파일 말에 당신은 모든 인증서를 연결할 수 있습니다 haproxy1.pemhaproxy2.pem또는 당신은 모든 PEM 파일이 들어있는 디렉토리를 지정할 수 있습니다.

cat cert1.pem key1.pem > haproxy1.pem 
cat cert2.pem key2.pem > haproxy2.pem

당으로 haproxy 문서

그런 다음 구성에서 다음과 같이 사용하십시오.

defaults
  log 127.0.0.1 local0
  option tcplog

frontend ft_test
  mode http
  bind 0.0.0.0:443 ssl crt /certs/haproxy1.pem crt /certs/haproxy2.pem 
  use_backend bk_cert1 if { ssl_fc_sni my.example.com } # content switching based on SNI
  use_backend bk_cert2 if { ssl_fc_sni my.example.org } # content switching based on SNI

backend bk_cert1
  mode http
  server srv1 <ip-address2>:80

backend bk_cert2
  mode http
  server srv2 <ip-address3>:80

SNI 에 대해서 더 읽어보세요.

SSL 지원은 haproxy에 대한 개발 준비 중이며 상당한 성능 저하가 있음을 명심하십시오.

이 스레드에서 논의 된 다른 솔루션이 있습니다 : https://stackoverflow.com/questions/10684484/haproxy-with-multiple-https-sites

이것이 도움이되기를 바랍니다.


연결할 때 인증서 / 키 순서가 중요합니까?
Erik Aigner

예를 들어 디렉토리를 지정하면 순서는 임의적입니다. 인증서를 포함하면 일치하는 키를 포함해야합니다.
리코

제안한대로 설정했지만 haproxy는 모든 도메인에 대해 첫 번째 인증서를 계속 사용합니다. (
Erik Aigner

crt-list같은 결과로 시도
에릭 아이그너에게

1
아 아아아! 그 트릭을했다!
에릭 아이그너

9

더 이상 인증서 목록을 연결하거나 지정할 필요가 없으며 폴더 만 지정하면됩니다.

frontend public
    bind *:443 ssl crt /etc/haproxy/ssl/

참고 : 폴더가 비어 있지 않고 유효한 PEM 파일이 있는지 확인하십시오. 그렇지 않으면 HAProxy가 실행되지 않습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.