프로젝트 진행 중 카카오 맵 API를 이용해 명소의 위치를 찍어주려고 한다. 하지만 로컬에서는 잘 보이지만 배포 환경에서는 보이지 않고 404를 받는 이슈가 나타났다.... 설마 HTTPS 설정을 해야 되나..?라는 단순한 생각을 해보았다. 하지만 의문인 게 SSL을 발급받지 않은 것은 로컬도 마찬가지였다. 그래도 혹시나 하는 생각으로 Certbot을 이용해 Let's Encrypt의 무료 SSL 인증서를 받아 적용해 보았다.
결론은 인정서와 전혀 상관없고 카카오 맵 API의 웹 플랫폼 등록에서 우리 서비스의 도메인을 넣지 않았다는...
Let's Encrypt?
Let's Encrypt는 HTTPS의 빠른 보급을 위한 취지로 만들어진 비영리 프로젝트라고 한다. 보통은 유료이지만 이곳에서는 무료다. 정말 고맙다. https://letsencrypt.org/
Certbot?
Certbot은 Let's Encrypt의 SSL 인증서를 자동으로 발급해주고 자동 갱신까지 해주는 봇 프로그램이다. https://certbot.eff.org/
인증서 발급 절차는 매우 간단했다.
인증서 요청 -> 도메인에 대한 소유권 확인 -> 발급 -> 갱신 설정
이렇게가 끝이다. 이 과정은 Cerbot 프로그램 하나로 자동화 해주고 난 잘 따라가 주기만 하면 된다.
Certbot 설치
참고로 내 실습 환경은 Ubuntu 20.04에 Nginx 환경을 사용할 거다.
1. Let's Encrypt Certbot 도구 설치
& sudo apt update
& sudo apt install letsencrypt vim cron -y
무료 인증서를 생성하기 전에 먼저 certbot이 설치 되어 실행 중인지 확인해야 한다.
이후 apt를 업데이트 해준 후, certbot 도구와 도구가 작동하도록 허용되는 모든 종속성을 설치해준다.
2. SSL 인증서 생성
Let;s Encrypt는 SSL 인증서를 제공할 도메인을 소유하고 있는지 확인하는 여러 방법을 제공한다. 이전에 인증서를 원하는 도메인을 소유하고 있어야 한다. 여기서는 test.com으로 예시를 들겠다.
와일드카드 인증서의 경우 Let's Encrypt가 혀용 하는 유일한 시도 방법은 pregerred-challenges = dns 플래그를 통해 호루 할 수 있는 DNS 시도라고 한다.
따라서 test@test.com에 대한 인증서를 생성하려면 아래 명령을 실행해야 하고 반듯이 도메인과 발급을 행하는 이메일을 포함해야 한다.
$ sudo certbot certonly --manual --preferred-challenges=dns --email my@email.com \
--server https://acme-v02.api.letsencrypt.org/directory --agree-tos -d test.com -d *.test.com
*certonly : * 인증서를 얻거나 갱신하지만 설치하지는 않는다.
–manual : 대화식으로 인증서 얻기
–preferred-challenges = dns : dns를 사용하여 도메인 소유권 인증
–server : 생성에 사용할 엔드 포인트를 지정
–agree-tos : ACME 서버의 가입자 약관에 동의
-d : 인증서를 제공 할 도메인 이름
위의 명령을 실행한 후 Let 's Encrypt는 DNS 항목에 텍스트 레코드를 추가하기 위한텍스트 문자열을 제공한다.
이후 설정 옵션에 대해 절차를 잘 따라가 준다.
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/test.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/test.com/privkey.pem
Your cert will expire on 2022-07-01. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
마지막에 위와 같이 메시지가 나오면 인증서 발급이 완료된 거다.
인증서를 확인하려면 아래 명령을 실행하면 된다.
$ sudo certbot certificates
Let's Encrypt의 인증서는 90일 동안 유효하다.
[SSL] certbot을 이용한 Let's Encrypt SSL 인증서 자동 갱신
'Backend > 보안' 카테고리의 다른 글
[보안] Bycrypt (0) | 2022.07.19 |
---|---|
[SSL] Nginx에 SSL 인증서 적용 (Let's Encrypt) (0) | 2022.07.08 |
[SSL] certbot을 이용한 Let's Encrypt SSL 인증서 자동 갱신 (0) | 2022.07.08 |