OpenBSD 릴레이, 여러 도메인에 대한 https 프록시

OpenBSD 릴레이, 여러 도메인에 대한 https 프록시

3개의 웹 서버(프록시와 동일한 시스템에서 실행)에 대한 프록시를 만들려고 합니다. A는 호스트 헤더를 통해 요청을 올바른 포트로 리디렉션하도록 릴레이를 성공적으로 구성했지만 요청 호스트 헤더를 기반으로 사용자 정의 인증서 및 개인 키 파일을 설정할 수 없으므로 모든 도메인이 /etc/ssl/에 저장됩니다. IP_ADDRESS.crt 및 /etc/ssl/private/IP_ADDRESS.key의 키 및 인증서 쌍. 이를 달성하는 방법에 대한 아이디어가 있습니까?

내 거 /etc/realyd.conf:

domain1="bar.com"
port1="3000"
domain2="foo.com"
port2="8000"
challengeport="3001"

table <challenge> { 127.0.0.1 }
table <table1> { 127.0.0.1 }
table <table2> {127.0.0.1 }

http protocol filter_challenge {
pass request path "/.well-known/acme-challenge/*" forward to <challenge>

tcp { nodelay, sack }
}

http protocol resolve_domains {
pass request quick header "Host" value $domain1 forward to <table1>
pass request quick header "Host" value $domain2 forward to <table2>

tcp { nodelay, sack }
}


relay "http_bar" {
    listen on $domain1 port 80

    protocol resolve_domains
    protocol filter_challenge

    forward to <table1> check tcp port $port1
    forward to <table2> check tcp port $port2
    forward to <challenge> check tcp port $challengeport
}

relay "https_bar" {
    listen on $domain1 port 443 tls

    protocol resolve_domains

    forward to <table1> check tcp port $port1
    forward to <table2> check tcp port $port2
}

답변1

OpenBSD 6.6부터 Relayd는 이제 SNI를 지원합니다. "tls keypair" 옵션에 대해서는 매뉴얼 페이지를 확인하십시오.

원하는 도메인 수를 처리하기 위해 이 옵션을 여러 번 지정할 수 있습니다.

http protocol "reverse_proxy_tls" {
  block
  pass request header "Host" value "www1.example.com" forward to <httpd_www1>
  pass request header "Host" value "www2.example.com" forward to <httpd_www2>
  pass request header "Host" value "www3.example.com" forward to <httpd_www3>
  tls { no tlsv1.0, ciphers "HIGH" }
  tls keypair "www1.example.com"
  tls keypair "www2.example.com"
  tls keypair "www3.example.com"
}

relay "https" {
  listen on $external_ip port 443 tls
  protocol "reverse_proxy_tls"
  forward to <httpd_www1> port 8080
  forward to <httpd_www2> port 8080
  forward to <httpd_www3> port 8080
}

답변2

Relayd는 아직 SNI를 지원하지 않습니다. 하프록시를 사용하세요.

관련 정보