HTTP는 웹상에서 정보(데이터)를 주고받을 수 있는 프로토콜이다. 주로 HTML 문서를 주고받는 데에 사용된다. 그러나 HTTP는 브라우저와 웹 서버 통신에 있어서 주고받는 데이터가 암호화되지 않고 그대로 전달된다는 단점이 있다.
HTTPS는 HTTP의 단점을 보완하기 위해 HTTP에 SSL이라는 기술을 더한 것이다. 여기에서 SSL(Secure Sockets Layer: 보안 소켓 계층)이란 웹 서버와 브라우서 사이의 보안을 위해 전송되는 데이터를 암호화하여 보안을 유지하는 프로토콜이다. 응용 계층과 TCP/IP 계층에서 동작한다. 사용 중인 웹 서버에 인증서를 받으면 된다. 이때 인증서는 제3의 신뢰기관에서 발급 받으면 된다.
Let's Encrypt라는 무료로 TTL/SSL 인증서를 설치할 수 있는 방법을 제공하는 기관을 사용하였다. Cerbot라는 소프트웨어를 설치함으로써 구현할 수 있게 된다. 중요한 점은 URL이 반드시 DNS 도메인을 가져야 한다. 그래야만 HTTPS로 배포가 가능하다.
$ 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
$ sudo apt-get install certbot python3-certbot-nginx
$ sudo vi /etc/nginx/sites-available/default
서버 네임에 적용할 도메인 이름을 작성한다.
$ sudo nginx -t
변경 후 잘 적용되었는지 확인한다.
이렇게 잘 적용됐다면 설정 파일을 적용하기 위해 nginx reload를 한다.
$ sudo systemctl reload nginx
-d 뒤에 지정할 도메인을 입력한다.
$ sudo certbot --nginx -d jwyang.shop -d www.jwyang.shop
이렇게 뜨면 이메일 주소를 입력한다.
동의 누르고, 관련 이메일은 받지 않는 걸로.
리다이렉션 유무를 물어본다. 1번은 HTTP 연결을 HTTPS로 리다이렉트하지 않고, 2번은 HTTPS로 리다이렉트한다.
이렇게 뜨면 잘 적용이 된 거.
www.ssllabs.com/ssltest/
이 사이트에 들어가서 URL 입력해 보면 잘 적용됐는지 테스트도 가능하다.
$ sudo service nginx restart
주소창 옆에 자물쇠 모양이 생긴 걸 확인할 수 있다.
끝!