0

EB 도커 응용 프로그램에 대한 HTTPS를 관리하는 가장 좋은 방법을 알아 내려고하고 있습니다.AWS Elastic Beanstalk VPC - ELS에서 인스턴스로의 HTTPS

현재 다음 접근 방식을 사용하고 있습니다.

  • ELB는 443에서 HTTPS 연결을 허용하고 인스턴스의 HTTP 포트 80으로 전달합니다.
  • ELB는 80에서 HTTP 연결을 허용하고 인스턴스의 HTTP 8080 포트로 전달합니다.
  • 인스턴스는 포트 80에서 HTTP 연결을 허용하고 도커 응용 프로그램으로 전달합니다.
  • 인스턴스는 포트 8080에서 HTTP 연결을 허용하고 HTTPS로 리디렉션합니다.
  • 이 모두가 정상적으로 작동합니다. 그것은 도커 앱이 리다이렉트에 대해 전혀 걱정할 필요가 없다는 것을 의미합니다. 그냥 포트 80에서 청취하고, 그것의 일을합니다. ELB와 도커 호스트가 나머지를 처리합니다.

    이 설정과 관련된 유일한 우려 사항은 도커 앱이 안전하지 않다는 것을 알 수 있기 때문입니다. 내 응용 프로그램 내에서 이것을 확인하면 실패합니다.

    도메인 이름과 도커 응용 프로그램을 완전히 분리하고 변경할 수있는 SSL 인증서가 있기 때문에 ELB에서 원래 HTTPS 연결을 계속 종료하는 것이 좋습니다. 나는 도커 호스트 (또는 ELB)가 HTTPS 프로토콜에서 요청을 전달 (재 암호화) 할 수있는 방법이 있는지 궁금하지만, 자체 서명 된 인증서를 사용하여 완벽하게 유지할 수 있습니다.

    이것은 분명히 ELB 및/또는 도커 호스트와 도커 응용 프로그램간에 존재하며 브라우저가 아닙니다.

    만료되지 않는 자체 서명 된 인증서를 만든 다음이 인증서를 도커 앱 (현재 Apache2를 사용하고 있지만 잠재적으로 nginx를 사용할 수 있음)의 웹 서버에 등록한 다음 ELB 또는 도커에게 알려줍니다 요청을 HTTPS로 전달하려면 호스트가 필요합니까? 또는 인증서가 신뢰할 수 없기 때문에 어느 시점에 넘어 지겠습니까?

    또는 도커 앱 웹 서버에서 HTTPS 연결을 종료 할 수있는 방법이 있습니까? 실제로 인증서를 미리 생성하지 않아도됩니다. (아마도 이것을 추측 할 필요가 있습니다. 아마 생성해야 할 수도 있습니다. 즉석에서 인증서 또는 뭔가).

    이런 종류의 작업을 수행하는 데 권장되는 모범 사례가 있습니까?

    답변

    0

    클라이언트 연결을 종료하고 백엔드로 포워딩하는로드 밸런서가있는 일반적인 솔루션은로드 밸런서가 백엔드 요청에 헤더를 추가하여로드 밸런서를 제거함으로써 제거 된 정보를 채우는 것입니다.

    ELB has a page on this

    및 사용하는 다음 헤더 :

    • X-Forwarded-For - 클라이언트 IP
    • X-Forwarded-Proto -이 계획/프로토콜
    • X-Forwarded-Port - 들어오는 포트입니다.

    신뢰할 수있는 클라이언트가 아닌 한 일반적으로 이러한 헤더를 클라이언트에서 직접 허용하지 않습니다. ELB가 당신을 위해 그것을 처리한다고 가정합니다.

    관련 문제