ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (route 53) 도메인 구매 및 ssl 인증서 받고 연결하기+한글 도메인
    AWS 2024. 12. 13. 19:34

    ▤ 목차

       

      >프론트와 백은 모두 배포가 된 상태

      >도메인 구매 후 ssl 인증서 발급 받고 연결하기

      >당연히 가입은 되어있는 상태여야한다.

      >대기 시간만 고려해도 1시간정도는 여유롭게 가지고 시작하자

      ✔ 도메인 구매

      참고로 AWS에서 도메인을 구매하고 연결했다.

      보통은 가비아를 많이 사용하던데 1-2달러 차이였기에 진행했다.

      ⌨ route 53 구매하기

       

      https://us-east-1.console.aws.amazon.com/route53/v2/home?region=ap-northeast-2#Home

       

      us-east-1.console.aws.amazon.com

       

       

       

      사용하고 싶은 도메인을 검색해서 구매하면 된다.

      이때 기존 AWS에 등록한 카드로 연결되어 첨부되는 방식이다.

       

       

      💻 과정

       

       

      연락처와 같은 부분이 있는데,

      중간에 빠지는 공간이 있으면 입력자료 검사에서 걸린다.

      나는 등록 연락처랑 관리연락처 등 모두 하나로 통일했다.

       

      이때 도메인은 1년만 사용하기로 해놓고 자동 갱신은 안하도록 설정했다.

       

      구매가 완료되면 왼쪽 네비바> 도메인 > 대기중인 요청을 누르면 확인이 가능하다.

      이때 승인되는게 20분에서 30분정도 걸린다.

       

       

      👏 중요

       

      구매를 하고나면 route 53에서 메일이 오는데 (순차적으로 1개씩 온다.)

      이메일 확인을 메일도 있으니 확인하자.

       

       

      이렇게 이메일 확인을 했으면 성고 메일을 기다리면 된다.

       

       

       

      이후에 등록된 도메인 탭에서 확인할 수 있다.

       


       

       

       

      ✔호스팅 생성

      ⌨ 호스팅 생성

      네비바를 열여보면 호스팅 영역이 있는데 탭을 눌러 호스팅 영역에 들어가자.


       호스팅 영역 생성하기 버튼을 누르고

       

      앞서 구매한 도메인 이름을 적어준다.

      유형은 퍼블릭 호스팅 영역으로 선택

      이미 되어있겠지만 다른 설정 건들이지 말고 진행하자.

       

      해당 호스팅 영역에 로드벨런서에 DNS를 연결할 것!!

      아래 정리하지만 해당 화면이 호스팅하는 공간이고 레코드를 연결한다고 알아두자.


      ➕참고

      해당 호스팅을 누르고 해당 탭을 보면 기본적으로 생기는 2개의 레코드가 있다.

      유형으로 보면 NS와 SOA.

      (만약 도메인을 다른 곳에서 구매하고 연결할 거라면 ns의 값 4개를 복사해서 해당 도메인 네임서버와 일치시켜야한다.)

       

       

      💻 NS 와 SOA

      💡NS 레코드?
      Name Server 레코드는 도메인의 DNS 요청을 처리할 서버를 지정한다.
      도메인이 연결될 네임서버를 정의하여 다른 DNS 서버들이 해당 도메인에 대해 질의할때 이 서버를 참조하도록 한다.
      도메인의 네임 서버를 지정하고 해당 네임서버로 트래픽을 유도하는 역할을 한다.

      예를 들어, "www.example.com"이라는 도메인을 인터넷에서 찾을 때, 어떤 서버가 그 정보를 가지고 있는지 알려주는 역할을 한다.

       

       

      💡SOA 레코드?
      도메인의 DNS 영역에 대한 시작 지점을 정의하는 레코드이다.
      해당 도메인의 관리 권한을 가진 DNS 서버의 정보, 데이터가 얼마나 자주 갱신되는지 포함되어있다.
      또한 도메인에 대한 기본적인 관리 구칙을 정의하고 다른 DNS 서버들이 이 정보를 기반으로 동기화할 수 있게 한다.

      도메인을 관리하는 사람이 누구인지, 얼마나 자주 정보를 업데이트할지 같은 중요한 규칙을 정의한 레코

       

       

       


       

       

       

      ✔ SSL 인증서 받고 연결하기

       

       

      https://ap-northeast-2.console.aws.amazon.com/acm/home?region=ap-northeast-2#/welcome

       

      ap-northeast-2.console.aws.amazon.com

       

      ⌨ SSL 인증서

      [한글 도메인인 경우, punycode로 변환 후 진행]

      http로 배포하는게 아니고 https로 프로젝트를 안정성 측면에서 배포하는게 좋다.

      http는 통신 규약인데, 클라이언트가 http 형식으로 데이터를 요청하면 서버도 해당 형식으로 정보를 전달한다.

      어쨌든 여기서 중요한건 http에서 s가 붙는데 이때, s는 Safe를 의미한다.

      뭐, 안전을 추가한다! 정로도 기억하면 된다.

       

      짱구가 사이트에 접속해서 정보를 입력할때 중성마녀가 훔쳐보지 못하게한다.

      > 접속한 사이가 신뢰할 수 있는 사이트라는 인증 마크

       

      이 인증서 관리하는 것을 AWS Certificate Manager라고 하는데 줄여서 ACM이라고 한다.

       

       

       

      글이 길지만 무료이고 손쉽게 인증서를 발급할 수 있다는 뜻이다.

       

      💻 인증서 받기

      인증서 요청 클

       

      1. 앞서 구매한 도매인 이름 적기
      2. 이때 중요한 점은 도메인 이름 앞에 *.example.com과 같이 *을 적어주자.
      3. 해당 인증서로 이동하자

      그럼 인증서 상태는 검증대기중이 뜨는데

      아래 도메인이 뜨면 'Route 53에서 레코드 생성' 을 누르자.
      (이거 안누르고 기다리면..30분도 이상도 대기할 것)

      누르면 나오는 레코드가 있을것(없으면 새로고침) 해당 래코드 선택하고 생성하자.

       

      그러면 인증서 상태가 발급됨으로 변해있을 것이다.

       

      다시 Route 53> 호스팅 영역 으로 돌아가 해당 도메인을 보면 
      CNAME 유형의 레코드도 추가된 것을 볼 수 있다.

       

       

      🤓  퍼블릭 SSL/TLS

      인터넷에서 데이터를 안전하게 주고받기 위해 사용하는 보안 프로토콜을 말한다.

      주로 웹사이트와 사용자 간의 연결을 암호화하여 중간에서 데이터를 훔쳐보거나 변경하는 것을 방지한다.

       

       

      • SSL (Secure Sockets Layer):
        SSL은 데이터를 암호화하여 안전하게 전송할 수 있게 해주는 초기 보안 프로토콜!
        하지만 보안상의 이유로 더 이상 사용되지 않으며, 대신 TLS로 대체된다.
      • TLS (Transport Layer Security):
        TLS는 SSL의 후속으로, 데이터 암호화와 인증을 제공하여 두 시스템 간의 안전한 통신을 보장한다.
        TLS는 데이터를 암호화하고, 전송 중에 데이터가 변경되지 않았는지 확인한다.

       

       

       


       

       

      ✔로드벨런서로 연결

      배포하는 당시 이미 로드밸런서(ALB)를 생성했기에 연결만하면 됐었다.

      배포 전반적 흐름

      더보기

       

      • 애플리케이션 코드 → Docker 이미지로 빌드
      • ECR → Docker 이미지를 저장
      • ECS → ECR 이미지를 기반으로 컨테이너 실행
      • EC2 → ECS 클러스터에 필요한 EC2 인스턴스 실행
      • ALB → 로드밸런서가 여러 ECS 인스턴스에 트래픽 분배

       

       

      ⌨ 로드밸런서에서 DNS 복사

       

       

       

      EC2를 들어가면 로드 밸런서가 있다.

       

      해당 로드밸런서를 선택하면 아래와 같은 창이 뜬다.(활성 상태여야지 연결됐는지 확인할 수 있다.)

      해당 DNS 이름을 복사하자.

      ssl을 연결하기 전, 배포만 했을때 해당 DNS이름으로 들어가면 코드가 돌아갔을 것.

       

       

      💻 호스팅 영역에 레코드 생성

      다시 Route53 에들어가서 호스팅 영역으로 들어간다.

       

       

      레코드 생성을 누르고 설정을 해주는데

      레코드 이름은 아무것도 없이(그냥 도메인 자체) 진행하자.

      사진과 같이 설정해주면 되는데

      이때 트래픽 라우팅 대상에 앞서 ec2에 로드밸런스에서 복사한 DNS 이름을 넣어주자.

       

       

       

       

      그리고 다시 로드 밸런서에 가서 리스너에 추가해야한다.

      https(443)포트를 생성하고 대상 그룹을 설정해주면 된다.

      여기에 연결은 ssl/ tls 인증서를 등록해주고

      /health 관련 태그와 /api 경로 패턴, 기본값 대상을 정해주자.

       

      그리고 http(80)으로 들어오는 값을 >https로 리디렉션 시켜줘야한다.

       

       

       

      도메인을 산 후 ssl 인증서로 안정성을 올린후

      호스팅을 연결하자.

      이때 보안그룹에 443을 넣기도 해야하고

      로드밸런서 리스너 규칙을 수정해야한다.

      ssl 인증문제로 http 신호는 정상적으로 리디렉트되는데 https 신호가 안잡힐 수 있다.

      나는 레코드 a를 설정할때 도메인 앞에 이름을 붙여 문제가 생겼었다.

       

      😊한글 도메인

      한글 도메인을 사용했는데 이때, 브라우저는 자동으로 punycode로 변환시킨다.

       

       

      Punycode converter (IDN converter)

      A tool that converts a text with special characters (Unicode) to the Punycode encoding (just ASCII) and vice-versa. Used for internationalized domain names (IDN).

      www.punycoder.com

       

       

      😊502 bad gateway

      해당 문제가 계속 되어서 엄청 삽질을 했는데,

       

      로드벨런서에 대상그룹 설정때문에 그랬다.

      대상 그룹 상태가 Healthy한데 왜 안될까 정말 healthy한가, 연결된 배포가 이상한가 계속 진행했는데

      그냥 로드벨런스에서 서버를 가리키고 있어서 그랬다.

       

      클라이언트가 리스너 80들어오면 301코드 뱉고 443으로 들어와야한다.

      443 요청이 들어오면 80으로 서버에 보내줘야했다.

      만약 해당 오류가 계속되면 대상 그룹을 바꿔보길 추천한다.

       

       

      'AWS' 카테고리의 다른 글

      https://example.com/ 이 실제로 있네?!  (0) 2024.12.04
      포트란? (쉽게 설명, 쉽게 비유)  (1) 2024.11.30
    Designed by Tistory.