HTTP(Hyper Text Transfer Protocol) : WWW상에서 정보를 주고받을 수 있는 프로토콜. 주로 html문서를 주고받는다.
TCP와 UDP를 사용하며, 80번 포트를 사용한다.
HTTP는 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜이다.
예를 들면, 클라이언트인 웹 브라우저가 HTTP를 통하여 서버로부터 웹페이지를 요청하면, 서버는 이 요청에 응답하여 필요한 정보를 해당 사용자에게 전달하게 된다. 이 정보가 모니터와 같은 출력 장치를 통해 사용자에게 나타나는 것이다.
요청(request)방식
- GET
- POST
- DELETE
- PUT
- HEAD
상태코드
- 301 Moved Permanetly
- 302 Found
- 303 See Other
- 403 Forbidden
- 404 Not Found
- 451 Unavailable For Legal Reasons
HTTPS(Hyper Text Transfer Protocol over Secure socket layer) : 말그대로 http에 보안레이어가 추가된 것이다. 통신의 인증과 암호화를 위해 개발되었으며 소켓통신에서 일반 텍스트가 아닌 SSL, TLS프로토콜을 통해 세션데이터를 암호화해서 전송한다.
HTTPS의 포트는 443번을 사용하며 http:// 대신 https://를 사용한다.
SSL - Secure Socket Layer 보안 소켓 계층, 인터넷 보안 프로토콜
TLS - Transport Layer Security 전송 계층 보안 SSL이 진화해서 TLS가 되었다. SSL이 표준화되면서 만들어진 컴퓨터 네트워크에 통신보안을 제공하기 위해 설계된 암호 규약이다.
0. Let's Encrypt?
Let's Encrypt - 무료 SSL/TLS 인증서
letsencrypt.org
HTTPS사용을 위해 무료로 SSL/TLS인증서를 발급해주는 비영리기관이다.
주로 인증서 발급 프로그램인 certbot을 사용하여 인증서를 발급해주게 된다.
Let's Encrypt로 인증서를 발급받기 위해서는 Domain이 필요하다. Let's Encrypt에서는 도메인이 아니면 인증서발급을 안해준다 ..
앞선 실습에서 준비한 Domain을 사용 할 것이다.
/etc/nginx/sites-available/default로 가서 server_name에 자신의 Domain을 적어주도록 하자.
1. Certbot 설치
https://certbot.eff.org/lets-encrypt/ubuntubionic-nginx
우분투-nginx certbot 설치 공식문서
먼저 Certbot PPA를 추가해준다.
$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository universe
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
ppa?
우분투는 6개월 주기로 새로운 버전이 출시됩니다.
이렇게 새로운 버전이 나올때마다 사용하던 소프트웨어들도 함께 최신버전으로 탑재됩니다.
하지만 소프트웨어들도 6개월씩이나 기다려야되면 시시해질 수 있겠죠?
예를들어서 기존에 사용하던 프로그램이 이미 업데이트 되었는데도 6개월이나 기다려야 된다면 말이에요.
그 해결책은 PPA입니다.
PPA는 개발자들과 열성적인 사람들이
모든 우분투 유저들에게 최신버전을 제공하는 것을 허락하는 저장소입니다.
원래의 PPA는 프로그래머들과 테스터들에게 제한되었지만,
지금은 모두 이용할 수 있습니다.
그렇다면 PPA는 무엇일까요?
우분투에서 소프트웨어를 설치하는 것은 윈도우나 Mac과는 다릅니다.
인터넷에서 일일이 패키지를 찾아서 다운받지 않고
‘우분투 소프트웨어 센터’에서 원하는 모든 것들을 검색하고 설치할 수 있거든요.
게다가 저장소에 있는 소프트웨어들은
아무 웹사이트에서 다운받은 EXE 파일들보다 훨씬 안정적이고 믿음직스럽습니다.
기본적으로 ‘우분투 소프트웨어 센터’의 소프트웨어들은
우분투 팀에 의해서 미리 안전하고 안정적이라고 판단되는 것들만 모여있기 때문입니다.
하지만 이것이 항상 좋기만 한 것은 아니겠죠??
바로 소프트웨어의 최신버전이 나와도 우분투의 다음버전까지 기다려야 하기 때문이에요...
그래서 필요한 기능이 바로 PPA(Personal Package Archive)입니다!!!
PPA는 우분투에 기본적으로 포함되어 있지는 않아요.
하지만 우분투가 업데이트하는 것보다 더 빠르게 업데이트를 제공합니다.
출처: https://deviantcj.tistory.com/24
이제 설치해보자.
$ sudo apt-get install certbot python3-certbot-nginx
언제나듯이 패키지관리자를 통해 설치~
2. certbot을 다운받았으면 인증서를 받자.
$ sudo certbot --nginx
// 인증서를 받고 설치
// 우리는 이 명령어를 쓸 것이다
$ sudo certbot certonly --nginx
// 인증서를 받기만
첫 번째 방법은 인증서를 받고, 설정까지 다 해준다.
두번쨰 방법은 인증서를 내려받기만 한다. 사용자가 직접 Nginx에 SSL 관련 Configuration을 작성해야 한다.
install을 하는 과정에서 몇가지 물음에 답을 해야 하는데 각자의 서버에 맞게 답해주자. 이메일 적으라면 적어주자.
3. EC2 인바운드설정
EC2의 자신의 인스턴스에 연결된 보안그룹으로 가서 인바운드 설정을 해준다.
HTTPS는 443포트를 사용한다.
위치무관으로 열어주자.
4. 발급된 인증서 확인
/etc/letsencrypt/live/[domain]/ 위치에서 발급된 인증서를 볼 수 있다.
이젠 http가 아닌 https로 도메인에 접속해 보자.
/etc/nginx/sites-available/default파일을 다시 열어보면 관련 환경설정이 자동으로 추가 된 것을 볼 수 있다.
5. 갱신하기
Let's Encrypt에서 발급된 인증서는 유효기간이 90일이다.
90일마다 갱신해줘야 계속 사용이 가능하다.
$ certbot renew
// 갱신날짜가 된 인증서 갱신.
// 갱신날짜가 아직 남았으면 skip
$ certbot renew --dry-run
// 강제갱신
크론을 이용하여 자동갱신을 구현 할 수 도 있다.