AWS 서버 구축⚒️(AWS의 컴퓨터를 빌려보자..!) (3)

‍서지오·2022년 8월 22일
0

Server Study

목록 보기
6/11
post-thumbnail

구현과정🚊


10. Let’s Encrypt 사용하여 HTTPS 적용

10-1. HTTP와 HTTPS 구분하기

  • HTTP : 웹 서버와 웹 클라이언트 간에 Web 정보를 주고 받기 위한 프로토콜
    • 주로 TCP(Transmission Control Protocol)와 조합되어 사용된다.
    • 클라이언트와 서버 간 하나의 요청에 하나의 응답을 주고 받는다.
    • 서버가 HTTP의 통신을 받을 포트 번호는 80번이다.
  • HTTPS : HTTP에 ‘Secure’를 붙인 HTTP 통신을 안전하게 보호하기 위한 구조
    • 인터넷 뱅킹, 개인정보 등록 및 수정과 같이 보안이 필요한 작업에 사용
    • 서버가 HTTP의 통신을 받을 포트 번호는 443번이다.
    • 특정 프로토콜이 정해져 있지 않고 ‘SSL/TLS’라고 불리는 프로토콜이 만들어주는 연결 방법을 사용한다.

Protocol : 컴퓨터와 컴퓨터 간 정보를 주고 받을 때 서로 이해할 수 있도록 하는 규칙
TCP : 데이터를 에러 없이 안정적이고 순서를 지키며 전달 할 수 있도록 하는 프로토콜로 주로 HTTP가 자신의 메시지를 전달하기 위해 사용한다.
UDP : TPC와 같은 전송 제어 프로토콜이지만 상대방이 데이터를 잘 받았는지 말았는지를 상관하지 않고 안전성이 떨어지지만 TCP에 비해 속도가 빨라 주로 유트브와 같은 스트리밍 기능이 중요한 곳에서 사용한다.
Let’s Encrypt : TLS/SSL 인증서를 무료로 발급해주는 CA(인증기관). 웹 서버에서 HTTPS를 사용할 수 있도록 한다. TLS 인증서 중 자동화가 가능한 DV(Domain Validated) 인증서 사용

10-2. SSL & TLS

  • 정보의 암호화에서 사용하는 여러 알고리즘 중 하나를 선택하여 서버와 클라이언트가 주고 받을 데이터를 전송 전 암호화 한다.
  • 주요 역할
    • 암호화 : 도청 되더라도 내용을 알 수 없도록 함
    • 인증 : 올바른 대상인지 확인
    • 조작 검사 : 내용의 조작 유무 판단

10-3. CertBot 설치 및 Nginx Configuration 설정

$ sudo apt update
$ sudo apt upgrade
$ sudo add-apt-repository ppa:certbot/certbot //certbot 설치
$ sudo apt install python-certbot-nginx 
$ sudo vim /etc/nginx/sites-available/default //인증서를 적용할 도메인 설정
$ sudo nginx -t //변경이 올바르게 됐는지 확인하기 위한 테스트
$ sudo systemctl reload nginx
  • CertBot : Let’s Encrypt에서 SSL 인증서 다운을 쉽게 하기 위해 제공하는 소프트웨어

10-4. SSL 인증서 다운로드

$ sudo certbot --nginx -d seojio-server.shop -d www.seojio-server.shop
  • 사용할 도메인에 SSL 인증서 다운로드

10-5. SSL Lab Server Test에서 SSL이 적용 확인

11. Sub Domain 적용(운영 서버와 개발 서버의 분리)

11-1. Sub Domain과 FQDN이란?

  • FQDN(Full Qualified Domain Name) : www.seojio-server.shop에서 www는 호스트 이름을 나타내고 sejio-server.shop은 도메인을 의미한다. 이렇게 호스트 이름과 도메인을 함께 표기한 걸 FQDN이라고 부른다.
  • Multi Domain : 기본 도메인에 호스트 이름만 다르게 붙여서 사용하는 여러 도메인을 의미
  • Sub Domain : 서브 도메인에 따라 서버 내의 각각 다른 폴더에 접근할 수 있도록 한다.

11-2. Gabia에서 레코드 추가

  • CNAME : 소유한 도메인에 별칭을 지정할 때 사용
  • 호스트에 dev와 prod 추가

11-3. Nginx configuration 설정

~$ cd /var/www/html
/var/www/html$ sudo mkdir dev //dev 폴더 생성
/var/www/html/dev$ sudo vi dev.html //dev 서브 도메인 접속 시 띄울 html 파일 생성
/var/www/html$ sudo mkdir prod //prod 폴더 생성
/var/www/html/prod$ sudo vi prod.html //prod 서브 도메인 접속 시 띄울 html 파일 생성

11-4. 서브 도메인 접속 화면


11-5. Domain Redirection 적용

  • IP To Domain Redirection : IP 주소로 클라이언트가 요청을 보내도 도메인 주소로 연결되도록 하는 것

12. 웹 템플릿 사용해보기

12-1. VS Code를 통해 웹 템플릿을 사용하여 페이지 생성

  • HTML
    • header와 body로 구성
      • header : html에 관련된 메타 정보를 내포(ex. html 버전), 화면에 보여지지 않는 정보이다.
      • body : 화면에서 보여줄 내용을 담고 있다.
    • HTML에서 보여줄 내용물 즉 요소를 HTML Tag라고 부른다.
      • tag의 id는 하나의 태그의 고유의 속성 값을 부여
      • tag의 class는 여러 태그 간 공통된 속성을 관리
    • HTML에서 사용할 이미지들은 images 폴더 안에 모아서 사용
    • 태그에 적용할 폰트들은 fonts 폴더 안에 모아서 사용
  • CSS & JS
    • css : html에서 보여줄 내용들을 예쁘게 꾸미는 역할을 수행(ex. 버튼 색깔을 변경)
      • html에 header 부분에서 연결을 명시
    • js : html에서 보여줄 내용들에 기능을 부여(ex. 버튼에 팝업 기능을 부여)
      • html에 body 부분에서 연결을 명시

13. Sub Domain에 생성한 페이지 적용

13-1. 폴더 접근 권한 수정

$ sudo chmod -R 777 /var/www/html
  • sub domain에서 사용할 html 파일을 수정하기 위해 chmod 명령어를 사용하여 읽기, 쓰기, 실행 모두 가능하도록 권한 변경

13-2. putty를 통해 VS Code로 생성한 폴더 및 파일들을 EC2에 전송

13-3. prod.seojio-server.shop에 연결 시 보이는 결과


참고 자료

https://velog.io/@oyeon/AWS-서버-구축-외부-접속

https://nordvpn.com/ko/blog/ipv4-ipv6-bigyo/

https://masssal.tistory.com/3

https://seong6496.tistory.com/322

https://luminitworld.tistory.com/81

https://m.blog.naver.com/hai0416/221623349894

https://victorydntmd.tistory.com/285

https://www.ciokorea.com/news/36536

profile
백엔드 개발자를 꿈꾸는 학생입니다!

0개의 댓글