구현과정🚊
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
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. 버튼 색깔을 변경)
- js : html에서 보여줄 내용들에 기능을 부여(ex. 버튼에 팝업 기능을 부여)
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