홈페이지를 만들때, API 서버 하나를 만들때도 https 적용은 이제 필수가 되었다. 최근에는 안드로이드에서 https 적용이 되지 않은 어플리케이션은 API 호출이 안되게 막거나, 상위 노출을 제한하는 등의 패널티를 주기도 한다. 하지만 개인이 수십~수백만원 하는 https 인증서를 단 하나의 토이 프로젝트를 위해 구입하는거는 경제적으로 무리가 있다.
따라서, Let's Encrypt 와 같은 무료 https 인증서 발급 사이트가 있는것이다.
Certbot 설치하기
몇몇 블로그들을 참고해보면 epel-release 리포에서 cerbot 을 설치하는 경우가 있는데, 이렇게 하면 잘 안된다. 공식 웹 사이트에서 설명하는대로 설치해야만 편리하게 인증서를 발급&갱신 할 수 있다.
My HTTP website is running (Software) on (OS) 부분에 본인 환경을 입력한다. 필자는 Nginx 소프트웨어를
CentOS 8 (RHEL 8) 에서 사용하기 때문에, 위 그림과 같이 입력했다.
그러면 snapd 라는 패키지관리 도구를 설치하라고 안내한다.
snapd 설치하기
Installing snapd | Snapcraft documentation
각 OS 별로 snapd 설치하는 방법에 대해 안내하고 있다.
필자는 아래와 같은 명령어를 사용해서 snapd 를 설치했다.
dnf install snapd
snapd 를 설치한다.
systemctl enable --now snapd.socket
ln -s /var/lib/snapd/snap /snap
snapd 설치를 마쳤다면, snapd 를 업데이트 한다.
snap install core
snap refresh core
certbot 을 설치한다.
snap install --classic certbot
링크를 만들어서 certbot 명령어를 적용한다.
ln -s /snap/bin/certbot /usr/bin/certbot
설치 끝!
인증서 적용하기
필자는 localhost 에서 서비스 되고 있는 nextcloud 를 nginx 의 proxy 기능을 사용하여 외부로 서비스 하고 있다.
즉, nginx 에서는 cloud.saintdev.kr 라는 도메인이 하나 등록되어 있다고 보면 된다.
certbot --nginx
도메인을 선택하고 Enter
축하한다고 하면 오류 없이 잘 설치된거다.
certbot 이 자동으로 .conf 파일을 수정하여 인증서를 설치해줬다.
systemctl restart nginx
.conf 파일이 수정되었으니 nginx 을 재시작 해주어 적용한다.
접속이 안되는 경우
필자의 경우, 443 포트를 뚤어주지 않아서 접속이 안되는 오류가 있었다.
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload
https 적용이 완료되었다.
crontab 으로 자동 갱신 설정
Let's encrypt 의 아쉬운점은 3개월 마다 한번씩 갱신해줘야 한다는 점 이다.
인간이 3개월에 한번씩 갱신 버튼을 누르는건 만만치 않게 어려우므로, 컴퓨터에게 이 작업을 맡기겠다.
우선, 갱신이 잘 작동하는지 테스트 해본다.
certbot renew --dry-run
별 문제 없이 갱신이 작동하면 crontab 에 등록한다.
crontab -e
crontab 에디터를 연다.
* * * * 0 /usr/bin/certbot renew --renew-hook="sudo systemctl restart nginx"
매주 일요일에 renew 를 시도하고, 성공 한다면 nginx 를 재시작 하도록 한다.
끝.
'볼봇의 코딩 생활 > Linux' 카테고리의 다른 글
CentOS 8 java 최신 버전 설치 (java-16) (0) | 2021.07.01 |
---|---|
MariaDB 외부 접속 허용하기 (0) | 2021.06.12 |
Centos 8 에 MariaDB 설치하기 (0) | 2021.06.12 |