2017-10-08 7 views
0

내 API에 대해 사용자 지정 "신뢰할 수있는 CA"구성을 원합니다. ELB를 사용하지 않을 때는 웹 서버에 "ca.pem"파일을 구성하여이 작업을 수행 할 수 있습니다. 그러나 ELB를 사용할 때 내 웹 서버는 원래 들어오는 클라이언트 인증서 (대신 ELB의 인증서)를받지 못한다고 생각합니다.AWS ELB의 신뢰할 수있는 인증 기관을 사용자 정의하는 방법은 무엇입니까?

ELB 뒤에있는 사용자 정의 CA를 어떻게해도 만들 수 있습니까?

답변

0

인스턴스는 원래 클라이언트의 인증서를 볼 수있을뿐만 아니라 실제로 클라이언트와 동일한 TLS 세션에 참여하지 않습니다. ELB Classic과 ALB는 두 개의 독립적 인 TLS 세션을 만들어 페이로드를 하나로 묶습니다.

원하는 것을하기 위해 ELB는 TLS에 전혀 참여할 수 없습니다. 그것은 서버에 의해 모두 수행되어야하며 밸런서는 레이어 4 이하에서 작동해야합니다. 이는 계층 7에서만 작동하는 Application Load Balancer를 배제합니다.

두 가지 해결책이 있습니다.

이전 솔루션은 TLS (SSL) 이 비활성화 된 인 TCP 모드에서 ELB (클래식)를 사용하는 것이 었습니다. ELB는 암호화 된 연결에서 페이로드를 맹목적으로 인스턴스를 통과시켜 브라우저와 직접 협상하여 CA 파일을 사용하여 브라우저를 인증합니다. 기본적으로 인스턴스에 클라이언트의 IP 주소가 표시되지 않으며 ELB가 계층 4 모드 (이해할 수없는 암호화 된 트래픽 처리는 물론)로 실행되기 때문에 조금 까다 롭습니다. X-Forwarded-For 헤더를 추가하십시오. ELB에서 "프록시 프로토콜"지원을 활성화해야하며 인스턴스는 프록시 프로토콜 프리앰블에서 클라이언트 주소를 추출하는 방법을 이해해야합니다.

최신 솔루션은 Network Load Balancer이라고하는 세 번째 유형의 균형 조정기입니다. 이 서비스는 계층 3에서 작동하며, 특정 포트에서 들어오는 요청의 균형을 맞추기 위해 여러 개의 EC2 인스턴스에 하나의 탄력적 인 IP 주소를 매핑 할 수 있습니다. 인스턴스는 여전히 모두 TLS 자신을 처리 할 책임이 있지만 들어오는 연결에서 클라이언트 주소를 볼 수 있습니다.