서버를 구축하고 도메인과 연결했지만 https를 적용하지 않았다면 보안적으로 취약하고 SEO 측면에서도 손해를 보게 됩니다. https를 적용하기 전에 사용하는 이유를 먼저 알아봅시다.
- 기존 HTTP 레이어에서 SSL(TLS) 프로토콜을 추가
- 소켓 통신에서 일반 텍스트를 이용하는 대신 SSL(TLS)를 통해 세션 데이터 암호화
- 암/복호화 과정이 추가되어 HTTP보다 느리지만 체감하기 어려움
- 기본 TCP/IP 포트는 443
기밀성
HTTPS는 공공 매체(인터넷)에서 두 참여자 간의 통신을 보호
무결성
HTTPS는 정보가 변조되지 않고 목적지에 도달하게 함
인증
HTTPS를 통해 웹 사이트의 진위여부 확인 가능
검색 우선순위
검색엔진에서 SEO를 통해 동일 키워드라면 https를 상위 노출
제가 사용할 무료 인증서인 Let's Encrypt의 작동방식은 아래 참고한 URL을 보시면 자세히 알 수 있습니다.
Certbot은 Let’s Encrypt 인증서를 자동으로 발급 및 갱신을 해주는 프로그램 입니다. 제가 사용할 서버는 Centos 기반이기 때문에 yum으로 certbot과 python2-cert-nginx를 설치하겠습니다.
$> yum install certbot python3-certbot-nginx -y
Certbot은 http와 같은 80포트를 사용하기 때문에 사용하기 전에 nginx를 stop 합니다. 그리고 standalone 플러그인을 사용하여 인증서만(certonly) 발급 받겠습니다.
$> systemctl stop nginx
$> certbot --standalone -d [Domain] certonly
[참고]
인증서를 발급 받았으면 nginx에서 http로 접근 시 https로 리다이렉트 시켜주는 설정과 인증서 경로를 등록해주는 설정을 진행합니다.
이후에 nginx를 다시 실행시키고 도메인에 접속하면 https로 접속한 것을 확인 할 수 있습니다.
$> systemctl start nginx
사이트 디렉토리 내에 인증서 유효성을 확인할 수 있는 파일을 업로드하여 인증서를 발급
Nginx나 아파치와 같은 웹서버에서 직접 SSL 인증을 실시하고 웹서버에 맞는 SSL세팅값을 부여
웹서버의 작동을 멈추고 네크워크(80 포트)를 이용해 사이트 유효성을 확인해 Let’s Encrypt SSL 인증서를 발급
도메인을 쿼리하여 확인되는 TXT 레코드로 사이트 유효성을 확인