AWS SSL

·2022년 7월 5일
1

Aws

목록 보기
1/1

https 사이트에서 http인 ElasticSearch api를 request하니 암호화된 HTTPS기반 사이트에서 암호화되지 않은 HTTP 사이트에 요청에 의해 Mixed content 에러 발생

html head에 추가

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
  • 위방법은 요청을가능하게 하지만 검색엔진으로 사용할 ES를 좀더 안전하게 사용하기 위해 HTTPS 를 적용
  • 직접 만든 api가아닌 오픈 api 사용할때이와같은 이슈가 발생한다면 위방법으로 해결하기

공식 사이트 ssl 설정 방법

Application Load Balancer를 사용하여 HTTP를 HTTPS로 리디렉션

EC2인스턴스로 구동 중인 Elasticsearch에 ssl적용 하는 방법

도메인은 Cafe24에 등록된 걸 사용하기 때문에 도메인에 관한 설정은 없음

AWS Certificate Manager

  • 요청
  • 퍼블릭 인증서 요청

  • 도메인 이름 지정
  • 검증 방법
    - DNS 검증
  • 이후 요청하게되면 상태가 검증 대기중 상태

인증서 ID 클릭 후 CNAME 이름, CAME 값 확인 후 Cafe24에 도메인 등록

Cafe24 호스팅센터

  • 로그인
  • 나의 서비스 관리
  • 신청한 아이디 선택
  • 서버호스팅 DNS 관리

  • 도메인 선택 → DNS 관리
  • 별칭(CNAME) 관리
  • CNAME 추가
    - 도메인 별칭 → CNAME 이름
    - CNAME이름에 등록한 도메인이 포함 되어 있음
    - Cafe24는 발급받은 빈칸 + 발급받은 도메인 자동설정 되어있으니 확인후 CNAME 이름 뒤에 도메인 제거후 추가
    - 실제 도메인명 → CNAME 값
  • 일정시간 경과후 상태가 변경됨

Target Group

  • 대상그룹은 LB에서 받는 요청을 대상그룹으로 라우팅함

  • 그룹명, 라우팅할 포트, 라우팅할 인스턴스 VPC 등록

  • 상태 확인부분은 healthy를 판별하기 위한 경로 지정

  • 웹이 아니기 때문에 apache를 설치해서 healthy 판별
    - EC2 인스턴스에 apache 설치
    - 403 에러가 뜬다면(index.html이 없어서)

    cp /usr/share/httpd/noindex/index.html /var/www/html/index.html

AWS Load Balancer

Elastic Load Balancing : 네트워크 트래픽을 분산하여 애플리케이션 확장성 개선

  • 통합된 인증서 관리, 사용자 인증 및 SSL/TLS 복호화를 통해 애플리케이션을 보안합니다.
  • 고가용성 및 자동 크기 조정으로 애플리케이션을 지원합니다.
  • 실시간으로 애플리케이션 상태 및 성능을 모니터링하고 병목 현상을 파악하며 SLA 규정 준수를 유지 관리합니다.

Elastic Load Balancing(ELB)은 하나 이상의 가용 영역(AZ)에 있는 여러 대상 및 가상 어플라이언스에서 들어오는 애플리케이션 트래픽을 자동으로 분산합니다.

  • EC2 → 로드밸런싱 → 로드밸런서 → 로드밸런서 생성
    - 추후 aws 콘솔 ui 변경 또는 이름이 변경 된경우 아래 링크로 접속

https://console.aws.amazon.com/ec2/v2#LoadBalancers:sort=loadBalancerName

  • HTTP, HTTPS 를 위한 Application Load Balancer Create

  • LB 이름 (규칙에 맞게 사용할 이름 등록)
  • Schme, IP address type 기본값 사용

  • VPC 선택 (없으면 생성)
  • Mapping Zone
    - private인 경우 외부 요청을 받을수 없고 vpc 안에서의 클라이언트 요청만 라우팅 됨

Aws Load Banancer를 생성하면 선택한 Subnet에 Load Balancer Node가 생성됨

인터넷을 통해 웹 서버에 접근해야 하는 경우 Private Subnet을 선택하면 Load Balncer Noder가 Private Subnet에 생성 되기 때문에 외부와 통신할 수 없는 상태가됨

  • Security gorups는 외부통신을 위해 인바운드 포트변경이 필요한경우 새로 생성해주자

  • Listeners and routing
  • 80포트 기본으로 추가적으로 사용할 포트 리스너 등록 및 target group 지정

  • 리스너 추가
    - 웹이 아니기 때문에 Https 포트포워딩은 추가하지 않음(웹페이지 ssl 설정이라면 http → https 리스너도 추가!
    - https → 요청오면 포워딩할 포트 추가!
    - 웹서버가 아니기 때문에 es, kibana 포트만 추가
    - 추가 규칙 이 필요하다면 규칙 보기/편집에서 추가 하기

  • LB의 DNS 이름(A 레코드)를 Cafe24에 등록

AWS Route 53

  • 호스팅영역 추가
  • 레코드 생성
    - 레코드 이름 → 와일드 카드 사용시 * 추가하기
    - 레코드 유형 A
    - 트래픽 라우팅 대상 → 별칭 사용
    - Application/Classic Load Balancer
    - 아시아 태평양(서울)
    - 로드밸런서 선택

Network Inbound Rules

  • 로드밸런서 vpc를 통해 내부에서 요청을 하기 때문에 추가적인 포트 오픈이 필요함
    - 9200 요청 → EC2 인스턴스 요청 X
    - 9200 요청 → ALB → EC2 인스턴스 O
    - 기존 다른 웹들은 위와같은 방식이라 내아이피 등록을 하게 되면 외부에서 바로 접근이 가능했지만 로드밸런서를 통한 접근은 로드밸런서 vpc 가용영역 Ip를 등록해야함

https://aws.amazon.com/ko/premiumsupport/knowledge-center/elb-find-load-balancer-IP/

  • 네트워크 및 보안 → 네트워크 인터페이스

  • 로드밸런서 이름 검색
  • 각 표시되는 네트워크 인터페이스의 프라이빗 IPv4 주소를
    네트워크 및 보안→ 보안그룹 → 사용하는 보안그룹 선택 → 인바운드 규칙에 각 아이피 추가

정상적으로 HTTPS 적용

profile
Java Backend Developer

0개의 댓글