기존에 블로그에 certbot 내용을 올렸지만, 그 내용은 oracle linux 위주의 내용이였기 떄문에,
centos 버전으로 또 올릴까 합니다.
우선, 도메인이 있다는 가정을 하고, centos7 환경에서 할 것입니다.
centos7 이상이면 모두 작동될 것입니다.
SSL 적용
# EPEL 설치
yum install epel-release
# CERTBOT 설치
yum install certbot
# NGINX 호환 모듈 설치
yum install python-certbot-nginx
위 명령어 중에....
yum install python-certbot-nginx
해당 명령어가 안먹히는 경우, yum install python3-certbot-nginx을 붙여서 하시길 바랍니다.
필자의 같은 경우는 반대로 했는데, 'yum install python3-certbot-nginx'의 패키지를 찾을 수 없어서 'yum install python-certbot-nginx' 명령어로 호환 모듈을 설치하였습니다.
sudo certbot --nginx
위 명렁어를 사용하면, conf.d 디렉토리에 *.conf 파일로 존재하면 모두 읽어서 자동으로 수정되는 듯하다.
아래와 같이 미리 코드를 작성해놓아야 적용이되는데...
# Sample Config
server {
listen 80 ;
listen [::]:80 ;
server_name admin.dev.kr;
location / {
proxy_pass https://proxy_webserver;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
출처: https://nasn.tistory.com/111
위 코드에서 80포트로 미리 선언되어야하고, 443포트를 미리 작성해놓으면, 충돌날 가능성이 있다.
기본
# certbot --nginx -d [Domain Name] --no-eff-email --agree-tos -m [Admin Email]
certbot --nginx -d mingty.com --no-eff-email --agree-tos -m test@test.com
- --agree-tos : 각종 체크 항목 전체 승인
- --no-eff-email : Let's Encrypt 이메일을 받지 않음
- -m : 관리자 이메일 지정
STANDALONE
# certbot certonly --standalone -d [Domain Name] --no-eff-email --agree-tos -m [Admin Email]
certbot certonly --standalone -d mingty.com --no-eff-email --agree-tos -m test@test.com
위 명령어는 NGINX 서비스를 이용해서 발급하는 것이다. 그리하여 nginx 서비스를 내리고 실행하여야하고 .conf 파일 안에 443포트의 내용들이 자동으로 생성되지 않는다.
편한 것은 [기본] 으로 하는 것이 더욱 편할 것이다.
그리하여...필자는 [기본]으로 하였다.
server {
server_name mingty.com;
location / {
proxy_pass http://127.0.0.1:12022;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/mingty.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mingty.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = turnkeyspace.co.kr) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name turnkeyspace.co.kr;
return 404; # managed by Certbot
}
위와 같이 자동으로 생성되었다....
자동갱신
갱신 테스트
certbot renew --dry-run
갱신 명령
certbot renew --pre-hook "nginx -s stop" --post-hook "nginx"
crontab 스케쥴러 설정
# Crontab config 편집기 실행
sudo crontab -e
# 아래 명령어 추가
# 매월 1일 00:00 실행 설정
0 0 1 * * /usr/local/bin/certbot renew --pre-hook "nginx -s stop" --post-hook "nginx"
위와 같이 설정하면, 자동 갱신까지 완료된다.
댓글