CertBot 개요 및 기본 정보
CertBot 설치 이유 환경
맨 처음에 스프링 프레임워크에 ssl 구입 후 application.yml 파일에 복잡하게 돈 주고 구매 후 설정 파일에 복잡하게 설정해서 사용하였다.
그러다 nginx에 특정 도메인을 연결하고 nginx 설정에 ssl 위치 지정해 주는 게 더 편하다는 것을 알게 되었고 그러면 백엔드는 https로 통신이 되든지 말든지 신경 쓰지 않아도 되니
그렇게 1년이 지나고 ssl 유효기간이 지났으니 다시 갱신하라고 하는데 다시 구매하는 것도 부담이 되고 오래간만에 다시 설정하면 다시 학습해서 헷갈리기도 해서 고민하다 발견하게 되었다.
lets encrypt라는 무료 ssl은 알고 있었으나 또 학습해야 할거 같고 3개월마다 갱신해 주어야 한다고 해서 미루고 있었는데
CertBot을 이용하면 자동 갱신까지 가능하다고 하여 사용해 보기로 했다.
따지고 보면 더 편하고 무료라 배워서 사용하는 게 이득이라고 생각했다. 서버가 여러대이면 특정 서버에서 ssl인증서를 읽게 할 수도 있다고 한다.
CertBot은 Let's Encrypt에서 제공하는 무료 SSL/TLS 인증서를 자동으로 발급하고 관리하는 도구입니다. HTTPS를 쉽게 적용할 수 있게 해주며, 특히 Nginx와 같은 웹 서버와 함께 사용하기 좋습니다.
CertBot 설치 환경
리눅스에 nginx를 통해 스프링 프레임웍으로 연결해 두었는데
lsb_release -a
위 명령어로 상세 버전을 확인하고
참고한 예제는 우분투 였는데 저는 데비안 버전이네요
CertBot 홈페이지에 가면 설치 명령어들을 확인 할 수 있다.
linux에 보면 snap와 pip가 있는데 차이는 이전 포스팅에 적어 놓았고
제가 참고한 예제에네 pip를 쓴 거 같으니 pip로 시도해 보겠습니다. pip 또는 snap를 선택하면 순서와 지침들이 안내되는데 pip의 경우 크론탭도 적용하여 주기 적으로 갱신 되도록 하는 부분이 있어서 pip로 선택하는 것이 좋지 않을까 싶네요.
한번 세팅하면 신경 쓸 필요 없도록
CertBot 설정
- sudo 권한을 가진 사용자로서 HTTP 웹사이트를 실행하는 서버에 SSH에 접속합니다.
- 시스템 종속성 설치
- sudo apt update
- sudo apt install python3 python3-venv libaugeas0
- RPM 기반의 사용자라면 (e.g. Fedora, CentOS ...)
sudo dnf install python3 augeas-libs
- Certbot-auto 및 모든 Certbot OS 패키지 제거
remove certbot, sudo dnf remove certbot, 또는 sudo yum remove certbot. - 파이썬 가상 환경 설정
- sudo python3 -m venv /opt/certbot/
- sudo /opt/certbot/bin/pip install --upgrade pip
- Certbot 설치
- sudo /opt/certbot/bin/pip install certbot
- Certbot 명령 준비
- sudo ln -s / opt/certbot/bin/certbot / usr/bin/certbot
- Certbot을 실행할 방법 선택
이 명령을 실행하여 인증서를 발급하고 Certbot이 nginx 구성을 자동으로 편집하여 서비스를 제공하도록 하여 한 단계로 HTTPS 액세스를 활성화합니다.
sudo certbot --nginx
이렇게 하면 자동적으로 설정이 되는 건데 자동으로 되었기 때문에 어디에 어떻게 설정이 된 지는 확인해 봐야겠네요
이 명령을 하고 나니 이게 잘 된 건지 인증 파일들은 어디 있는 건지 잘 모르겠네요
딱히 로그 파일에는 중요한 정보가 있는 거 같지는 않고 해당 경로의 파일 구조들만 생성 되어 있는거 같네요
도메인명 관련된 내용들이 없는 걸로 보아 nginx 구조만 만들어 놓은 거 같습니다.
여기까지 만으로는 인증서 다운로드한 느낌은 없는데 좀 더 살펴봐야겠네요 먼가 구조는 만든 거 같은데 인증서는 어디에 어떻게 되는 거니
이 과정을 거치면 자동으로 되겠거니 했지만 공식 홈페이지의 이 내용은 생각해 보니 nginx 하나만 돌릴 때 기본 설정 법인 거 같다
나의 경우 nginx에서 spring으로 다시 보내기 때문에 추가적인 방법들이 필요한 거 같다
certonly --nginx는 Certbot을 사용하여 Nginx 서버에서 SSL 인증서를 발급받을 때 사용하는 명령어입니다. 이 명령어는 다음과 같은 역할을 합니다:
certonly: SSL 인증서를 발급받지만 Nginx 설정 파일을 자동으로 수정하지 않고 인증서만 발급합니다.
--nginx: Nginx 웹 서버를 대상으로 Certbot이 인증서를 발급받도록 지정합니다.
이 명령어는 자동으로 Nginx 설정을 변경하지 않고 인증서만 갱신하거나 발급하고자 할 때 유용합니다. - 자동 갱신 설정
echo "0 0,12 * * * root /opt/certbot/bin/python -c 'import random; import time; time.sleep(random.random() * 3600)' && sudo certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
크론탭에 설정하는 이 부분도 나는 적용이 안되는 거 같아 crontab -e로 추가해 주어야 하지 않을까 싶다. - 여기까지 하면 https://도메인 했을때 정상 작동 해야 하는데 되지 않는 것으로 보아 추가 적인 설정을 해야 할거 같다.
- [월간] 업그레이드 certbot
때때로 Certbot을 업데이트하여 최신 상태로 유지하는 것이 중요합니다. 이렇게 하려면 컴퓨터의 명령줄에서 다음 명령을 실행합니다.
sudo /opt/certbot/bin/pip install --upgrade certbot certbot-nginx
여기 까지 하면 돼야 하지만 저는 되지 않아서 다른 방법을 찾아보겠습니다.
여기 까지는 nginx만 사용하며 localhost에만 적용하는 것인지
certbot certonly --nginx -d '도메인명' 이렇게 하면
The requested nginx plugin does not appear to be installed
이런 플러그인이 없다는 메시지가 나온다
그래서 다시 도전해 본다 여기 까지는 아마도 nginx만 사용하기 위한 최소한의 가이드가 아니었을까 싶고 다시 Try
Debian 리눅스 서버에서 Nginx와 Spring 웹 프레임워크를 사용하는 경우,
Certbot으로 SSL 인증서를 설정하는 방법은 다음과 같습니다.
1. Certbot 설치
2. Nginx 설정
Nginx 설정 파일을 열어 Spring 애플리케이션을 프록시하도록 설정합니다.
3. 인증서 발급
이 코드 실행시 이메일 주소와 동의 여부등을 물어보고 conf 위치와 key file 위치 등이 표시 된다.
신기한건 conf.d 디렉토리 밑의 해당 사이트 환경 설정 파일에 키파일들의 위치등이 변해 있다는 거다
미리 백업 받아 둘걸 전에 정확히 어떤 형태 였는지 기억이 안난다 이글을 보시는 분들은 백업 부터 해 두시길 추천 드립니다.
4. 자동 갱신 설정
Certbot은 기본적으로 갱신 자동화가 설정되어 있습니다. 추가 설정은 필요하지 않습니다.
생각보다 쉽고 더 중요한 건 무료다
전에는 돈 주고 ssl을 구입해서 사용하였는데 무료고 쉽고 한번 세팅해 놓으면 자동으로 업데이트된다고 하니 익혀서 쓰면 개 이득인 거 같다 강추
'개발 > 서버' 카테고리의 다른 글
linux pip snap 차이 (0) | 2024.09.05 |
---|---|
우분투(Ubuntu)와 데비안(Debian) 리눅스 차이점 (0) | 2024.09.05 |