AWS로 시작하는 인프라 구축의 정석 리뷰5(10장 커스텀 도메인과 DNS 준비하기)

신창호·2023년 8월 1일
1

aws책리뷰

목록 보기
4/8
post-thumbnail

📞 도메인이란?

통신을 내부적으로 처리할 때는 IP주소를 이용한다.
하지만 IP 주소는 숫자의 나열로 표시되므로 사람은 기억하기 어렵다.
그래서 숫자 이외의 문자를 이용해 사람이 이해하기 쉽고 기억하기 쉬운 표현으로 나타내는 수단이 도메인 이름이다.

  • 도메인 이름도 주소처럼 계층시스템을 이용해 이름이 중복되지 않는 시스템이다.

  • 요소는 좁은 범위에서 넓은 범위로 나열된다.

    • 좁은도메인.중간범위.넓은범위
    • ex. service_name.co.kr



📒 DNS

  • 도메인 이름에서 IP주소를 결정하는 것을 이름 결정(domain name resolution) 이라고 한다.

  • 이 이름을 결정하는 시스템을 DNS라고 한다.

  • 도메인 이름과 IP주소는 반드시 1:1 관계가 아니다.

    • 하나의 도메인 이름에 여러 IP 주소와 대응되어있거나
    • 여러 도메인 이름이 하나의 IP 주소에 대응하기도 한다.



SSL 서버 인증서

  • HTTP를 사용하는 웹사이트에 접속했다면 ⚠️Not Secure라는 메시지가 뜰 것이다.

  • HTTP 통신은 데이터를 있는 그데로 요청하고 응답하기 때문에, 중간에서 탈취당하게되면, 있는 그대로의 정보를 노출되는 것이다.

    • 만약, 통신한 정보가 개인정보같이 중요한 정보라면 위험한 일이다.
  • 그래서 HTTPS는 SSL 혹은 TLS라는 알고리즘을 이용해 데이터를 암호화하여 전송한다.

  • 인증서

    • HTTPS의 또 다른 특징은 브라우저가 서버의 응답과 함께 응증서를 확인할 수 있다.



인증방식

SSL/TLS를 들어가기전에, 대칭키와 비대칭키에 대해 알아야 한다.
위에서 SSL은 비대킹키와 대칭키를 혼합해서 사용하기 때문이다.

1. 클라이언트가 서버에 접속한다. 이 단계를 Client Hello라고 한다.

  • 주고 받는 정보
    • 클라이언트 측에서 생성한 랜덤 데이터
    • 클라이언트가 지원하는 암호화 방식들
      • 클라이언트와 서버가 지원하는 암호화 방식이 서로 다를 수 있기 때문에 상호간에 어떤 암호화 방식을 사용할 것인지에 대한 협상을 해야 합니다. 이 협상을 위해서 클라이언트 측에서는 자신이 사용할 수 있는 암호화 방식을 전송하게 됩니다.
    • 세션 아이디(이미 SSL 핸드쉐이킹한 경우)
      • 세션 아이디를 발급받은 경우, 사용할 연결에 대한 식별자를 전송

2. 서버는 Client Hello에 대한 응답으로 Server Hello를 한다.

  • 주고받는 정보
    • 서버 측에서 생성한 랜덤 데이터
    • 서버가 선택한 클라이언트의 암호화 방식
      • 클라이언트가 전달한 암호화 방식 중에서 서버 쪽에서도 사용할 수 있는 암호화 방식을 선택해서 클라이언트로 전달한다.
      • 이로써 암호화 방식에 대한 협상이 종료되고 서버와 클라이언트는 이 암호화 방식을 이용해서 정보를 교환하게 됩니다.
    • 인증서(서버의 공개키도 포함되어 있다.)

3. 클라이언트는 서버의 인증서가 맞는지 확인한다.

  • HTTPS에 맞는 서버라면 CA에 의해서 발급된 인증서일텐데,
  • 클라이언트는 내장된 CA리스트(이때 공개키도 같이 있다.)를 확인하다.
    • 만약 CA리스트에 인증서가 없다면, 사용자에게 경고 메시지를 출력
  • 리스트에 있다면, 인증서가 CA에 의해서 발급된 것인지 확인한다.
    • CA의 공개키를 이용해서 인증서를 복호화하며, 복호화 성공시 인증서는 CA의 개인키로 암호화된 문서임이 보장된다.
  • 이로써, 인증서를 전송한 서버를 신뢰할 수 있게 된다.

이렇게 신뢰할 수 있는 서버라는 것이 확인이 되면 다음으로는 세션을 위한 준비를 한다.

4.pre master secret값을 서버에게 보낸다.

  • 서버의 랜덤 데이터와 클라이언트가 생성한 랜덤 데이터를 조합해서 pre master secret이라는 키를 생성하게 된다.
  • 이 키값은 세션을 만들기위해서 서버로 보내줘야하는데,
  • 이때 서버의 공개키로 pre master secret 값을 암호화해서 서버로 전송한다.

5. 서버는 pre master secret 값을 자신의 비공개키로 복호화합니다

  • 이로써, 서버와 클라이언트 모두 pre master secret값을 공유하게 된다.
  • 이제 이 키값은 master secret 값으로 만들고, master secret은 session Key를 생성한다.
    • 이젠 session key 값을 이용해서 서버와 클라이언트는 데이터를 대칭키 방식으로 암호화한 후에 주고 받을 수 있게 된다.

6. 클라이언트와 서버는 핸드쉐이크 단계의 종료를 서로에게 알린다.

7. 서로 메시지 교환을 한다.

8. 데이터 전송이 끝나면

  • TLS 통신이 끝났음을 서로에게 알리고,
  • 통신에서 사용한 대칭키인 세션키를 폐기한다.

CA(Certificate Authority)

  • 인증서를 보증해주는 제 3자를 CA라고 부른다. (뜻도 인증기관이다.)
  • CA는 인증서를 발급해주는 엄격하게 공인된 기관으로, 만약 URL은 HTTPS이지만 CA 기관이 아닌 곳에 접근하여도 신뢰성없는 페이지라며 주의 메시지가 뜬다.
  • 인증서를 발급받으려면 인증 서명 요청서를 CA에 만들어서 신청해야된다.
    • 요청서에 들어갈 정보로는 국가코드, 도시, 회사명, 부서명, 이메일, 도메인 주소, 사용하게될 공개키
    • 즉, CSR은 '내가 어느 도시에 있는 어떤 회사인데 이 키(공개키)를 가지고 인증서를 발급받고 싶다'라고 인증기관에게 인증서를 요청하는 신청서.
  • 인증서에 유효기한도 있어, 기한이 다하면 갱신해줘야한다.
  • 여담으로, 인증되지않은 사이트의 경우 검색엔진에서도 잘 노출되지 않는다고한다.(애초에,찾기도 힘듬)






🏳️ Route 53

AWS 에서의 DNS의 역할을 하는 서비스를 Route53이라 한다.

기능

  • 도메인 이름 등록
  • DNS 서버



도메인 이름 등록

  • 상위 도메인을 관리하는 조직에 자신의 도메인을 요청해서 등록하는 것을 말한다.
  • Route53을 이용하면 AWS가 도메인 취득을 대행해준다.



DNS 서버

  • 퍼블릭 DNS : 외부에 공개하는 DNS
    • 웹 서버나 로드 밸런서 등을 공개할 때 이용되는 서버
  • 프라이빗 DNS : 외부에 공개하지 않는 DNS
    • 시스템 내부에 생성한 리소스에 이름을 붙여 관리할 때 쓰임






Certificate Manager

  • AWS에서는 도메인 검증 완료 인증서에만 대응한다.






실습

생략

참고 링크

profile
한단계씩 올라가는 개발자

0개의 댓글