안녕하세요 코딩하는헬린이 입니다.
오늘은 Let's Encrypt 를 사용하여 ssl 를 발급하여 nginx ssl 적용을 하는법에 대하여 포스팅하겠습니다.
환경설정
- ubuntu 18
- nginx
- certbot
# Let's Encrypt 란 무엇인가?
Let's Encrypt는 사용자에게 무료로 TLS 인증서를 발급해주는 비영리기관이다. 몇 가지 TLS 인증서 종류 중에서 완전 자동화가 가능한 DV (Domain Validated, 도메인 확인) 인증서를 무료로 발급한다.
- 나무위키
- 추가내용 -
개요
Let’s Encrypt는 SSL 인증서를 무료로 발급해주는 CA(Certificate Authorities)입니다. 여러 글로벌 기업의 후원을 받고 있으며 모질라(Mozilla) 재단에서 ‘신뢰할 수 있는 인증 기관(Trusted CA)’ 으로 인증도 받았습니다. 따라서 베리사인(VeriSign)이나 코모도(Comodo)와 같은 유명 인증 업체와 같은 신뢰도를 가지며 SSL 암호화 기술 방식과 동작도 정확히 동일합니다. 단지 다른 것은 사이트의 인증에 문제가 있어 최종 웹사이트 방문자가 피해를 입었을 경우 배상 여부만 차이가 있을 뿐입니다. 여기를 누르면 추가자거인 SSL과 CA에 대한 쉽고 간략하게 설명한 글을 볼 수 있습니다.
Certbot
Let’s Encrypt의 SSL인증서는 ACME(Automatic Certificate Management Environment) 프로토콜을 준수하는 프로그램을 이용해 발급을 받을 수 있는데 Let’s Encyrpt는 Certbot 사용을 권장하고 있습니다. 여기를 방문하면 ACME를 지원하는 기타 프로그램 목록을 볼 수 있습니다. 참고로 2016년 5월까지 Certbot은 letsencrypt 나 letsencrypt-auto로 불렸습니다.
Certbot을 시스템 관리자가 서버에서 실행하는 프로그램입니다. 시스템 관리자는 Certbot을 통해 인증서를 직접 요청할 수 있습니다. 다양한 웹서버와 운영체제에 적합한 패키지 역시 배포하고 있습니다. 이 페이지에서 자신의 환경에 맞는 패키지를 검색하고 설치하는 방법을 쉽게 찾을 수 있습니다. Certbot에 대한 문서는 여기를 참고하세요.
[출처: devlog.jwgo.kr/2019/04/16/what-is-letsencrypt/]
기관하고 프로그램이라고 생각하시면 됩니다.
# 설정
이 설정은 위에 말씀드렸지만 nginx 가 설치되어 있는 상황이어야 하며,
본인이 사용 할 수 있는 도메인을 가지고 있어야합니다.
1. certbot 설치
아래와 같은 명령어를 순차적으로 실행시켜줍니다.
$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository universe
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install python-certbot-nginx
그 후 certbot 설치를 진행해주시면 됩니다.
2. nginx 설정
$ sudo vi /etc/nginx/sites-available/default.conf
nginx 설정을 해주셔야 하는데 아래와 같이 server_name에 본인이 발급받은 도메인을 적어놓습니다.
server {
server_name example.com;
location / {
proxy_set_header HOST $host;
proxy_pass http://127.0.0.3030;
proxy_redirect off;
}
.
.
.
}
3. 인증서 발급
저같은 경우에는 인증서 발급과 동시에 nginx 설정까지 같이 해주는 명령어로 사용했습니다.
sudo certbot --nginx -d example.com
-d 옵션은 도메인을 입력하는것이며 여러개 입력가능합니다.
또한 현재 저는 자동으로 설정되는 방법을 추천하였지만 수동으로 직접 하고 인증서만 발급받고 싶으시다면
sudo certbot certonly --standalone -d example.com
이러한 방법을 사용하시면 됩니다.
인증서를 발급 받은 과정에서 비밀번호 입력, 연락받는 이메일 등 정보를 입력하는게 나오는데 안적셔도 됩니다.
발급이 되었다면 nginx 설정 파일 내용이 변했을것이며
/etc/letsencrypt/live/example
경로에 인증서 파일이 생성되었을겁니다.
다 됐다면 nginx restart 를 해주시면 됩니다.
4. 갱신
인증서는 90일 동안 유효하기에 갱신해줘야 합니다.
certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"
hook 명령어는 규격화된 명령어이며
https://advancedweb.hu/lets-encrypt-hooks-use-cases/
참고하시면 될 듯 합니다.
매번 이렇게 명령어를 입력하실수 없기에 cron을 이용하여 스케줄러 설정하여 사용하고있습니다.
감사합니다.
수고하셨습니다.
'개발 > Linux' 카테고리의 다른 글
[Linux] nginx upstream을 사용하여 로드밸런싱 처리 (0) | 2021.06.20 |
---|