티스토리 뷰
http로 전송하는 모든 데이터는 제3자가 중간에 가로챌 가능성이 있기 때문에 https를 적용해서 보호해야 하지만 유료로 인증서를 구매해야 하기 때문에 개인 사이트의 경우 적용하지 않는 경우가 많습니다.
크롬 브라우저의 경우 https가 아닌 사이트에 "안전하지 않음"표시를 하기도 하고, 구글 검색엔진은 https적용된 사이트가 더 높은 순위를 받을 수 있도록 하고 있기 때문에 가능하면 https를 적용하는게 좋습니다.
[ http로 전송했을 경우 패킷캡쳐 프로그램으로 간단하게 사용자 정보를 획득할 수 있습니다. ]
Let's Encrypt
Let's Encrypt는 이런 인증서 비용이 https보급에 방해가 된다고 생각해서 ssl 인증서를 무료로 제공해 https보급에 힘을 주기 위해 만들어졌습니다. 따라서 개인 사용자는 물론 기존 유료로 인증서를 구매해서 사용하던 업체도 모두 무료로 https를 사용할 수 있게 되었습니다.
* 웹 서버 설정을 변경해야 하기 때문에 서버 root 권한이 필요합니다. 만약 root권한을 획득할 수 없는 일반 웹호스팅 같은 경우에는 각 업체에 let's encrypt를 지원하는지 문의해보셔야 합니다.
* 인증서를 설치하려면 도메인 소유 인증을 받아야 합니다. 업체에서 도메인을 구매할 경우 해당 도메인에 연결된 이메일주소로 인증을 받기도 하지만 let's encrypt는 웹서버에서 인증을 받습니다. 따라서 도메인과 연결된 웹 서버에서 아래 내용을 진행하셔야 합니다.
Certbot
certbot은 lets encrypt에서 인증서를 발급하고, 웹서버에 설정을 도와주는 프로그램입니다.
여기서는 CentOS 7, apache 2.4 기준으로 설치방법과 사용방법을 알아보겠습니다.
- Certbot 설치
yum install python2-certbot-apache
위 명령으로 certbot 스크립트를 설치합니다.
만약 패키지를 찾을수 없다는 "No package python2-certbot-apache available"오류가 뜬다면 EPEL repository가 활성화 됐는지 확인해봐야 합니다. 비활성 상태라면
yum install epel-release
위 명령으로 EPEL repository를 활성화시킨 뒤 다시 설치해주세요.
- 인증서 설치
1. ".well-known" 디렉토리 생성
2. 인증서 발급
certbot certonly --webroot
실행하면 ssl 인증서 갱신이나 보안관련 알림을 받을 이메일주소를 적습니다.
그 다음 약관에 동의해줍니다.
그 다음 각종 뉴스등 수신여부를 묻습니다. 필요하면 Y를 입력해 메일을 수신합니다.
https를 적용할 도메인을 적어줍니다. 프로토콜은 제외하고 도메인명만 적습니다. ( https://example.com => X, example.com => O )
webroot 디렉토리를 지정해줍니다.
/home/userid/www 등 https를 적용할 도메인 루트와 매칭되는 디렉토리를 넣으면 됩니다.
인증서 발급이 완료됐습니다. 발급된 인증서는 /etc/letsencrypt/live/[도메인명] 에 저장됩니다.
3. apache 적용
ssl 엔진을 적용한 설정값을 apache에 추가한 뒤 restart 시켜줍니다.
- 인증서 갱신
certbot renew
실행 시점은 인증서가 만료되기 전에만 돌려주면 되니 매달 1일등 원하는 시점으로 잡으면 되나, 매일 2번씩 체크하는것을 권장하고있습니다. certbot에서 제공하는 샘플 스크립트는 아래와같습니다.
0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew
나에게 맞는 설치 / 실행방법 찾아보기
만약 사용중인 OS와 웹서버가 CentOS 7 / apache 가 아니라면 cerbot 설치방법이나 웹서버 설정 방법이 다를수도 있습니다.
이런 경우엔 certbot에 자세한 설명이 나와있으니 [ certbot 홈페이지 ] 에서 확인해주시거나, 저에게 문의해주시면 알려드리겠습니다.