2013-10-31 2 views
4

NginX (로드 밸런서)가 443에서 트래픽을 허용하고로드 균형 조정 된 웹 서버 노드에서 포트 443으로 전달하는 방법을 알고 싶습니다.NginX로드 밸런터에서 SSL을 종료하지 않는 방법

SSL 종료가 NginX 수준에서 발생하는로드 균형 조정기로 NginX를 사용하고 있습니다. 내 웹 포트에서 역할에 그리고 Nginx에 암호화되지 않은 트래픽을 전송 80

이 내 현재 ngnx 구성입니다 : 내가 겪었

upstream appserver { 
    server 10.0.1.132; 
    server 10.0.1.243; 
} 

server { 
    listen  443 ssl; 
    server_name localhost; 

    ssl_certificate  /etc/nginx/cert.pem; 
    ssl_certificate_key /etc/nginx/cert.key; 

    ssl_session_cache shared:SSL:1m; 
    ssl_session_timeout 5m; 

    ssl_ciphers HIGH:!aNULL:!MD5; 
    ssl_prefer_server_ciphers on; 

    location/{ 
     proxy_pass http://appserver; 
    } 
} 

: 내가 원하는 경우 Nginx load balance with upstream SSL

내 실제 문제이며, NginX가 443의 트래픽을 수신하면 nignx에서 ssl 종료를 구성해야합니다. 그렇지 않으면 nginx 서비스가 시작되지 않고 누락 된 SSL 인증서/키에 대해 불평 할 것입니다.

요약하면 Nginx가 443의 트래픽을 받아 들여로드 밸런싱 된 웹 서버 노드에서 443으로 전달하기를 바랍니다. 그런 다음 내 웹 서버가 SSL 작업을하도록하십시오.

로드 밸런서 수준에서 SSL 오프 로딩을 수행하는 것이 가장 좋습니다.하지만 달리 수행하고 싶습니다.

감사합니다.

+0

당신이 묻는 것은 MITM 공격이라고합니다 : http://en.wikipedia.org/wiki/Man-in-the-middle_attack 바로 SSL/TLS가 방지하는 것입니다. – VBart

+0

동의 함. 로드 밸런서 (NginX뿐 아니라로드 밸런서 자체)를 사용하려면로드 밸런서 수준에서 SSL 종료를 구성해야합니다. 나는 구체적으로 [this] (http://security.stackexchange.com/a/43097/34084) 답변에 대해 백엔드 SSL을 제안한 곳을 대답했다. PCI 요구 사항만큼이나 어려운 것은 아닙니다. 나는 단지 전체 개념을 이해하려고 노력하고있다. – slayedbylucifer

+3

nginx와 같은 계층 7로드 밸런서를 사용하려면 요청에 액세스하기 위해 연결의 암호화를 해제해야하며 nginx.conf에서 키/인증서를 지정해야합니다. 그런 다음 백엔드로 보내기 전에 다시 암호화 할 수 있습니다 ('proxy_pass https : // appserver' 사용). 다른 방법으로 L4 밸런서 중 하나를 사용하여 TCP 레이어에서 TLS의 균형을 조정할 수 있습니다. – VBart

답변

1

이것은 NGINX의 부분에서 레이어 4 스누핑/라우팅이 필요합니다. 이는 분명히 entirelysupported이 아닙니다. NGINX는 SNI를 지원하는 것 같지만 어떤 이유로 TLS 연결을 종료 할 수 없습니다.

나는 HAProxy를 사용하여 끝냈다.

관련 문제