CentOS7 + nginx 에 Lets Encrypt 무료인증서 설치 & 설정
in Linux
CentOS 에서 Let’s Encrypt 인증서를 받아서 nginx 서버에 적용시켜 봅시다~
YUM epel 저장소 추가
yum install epel-release
certbot 설치
CLI 로 인증서를 생성 및 관리할 수 있도록 해주는 프로그램이다.
yum install certbot
443 포트 방화벽 오픈
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
nginx stop
–standalone 옵션으로 인증서 생성시 오류가 나기 때문에 잠깐 nginx 를 끈다.
service nginx stop
인증서 생성
certbot certonly --standalone -d 생성할 도메인
# ex
certbot certonly --standalone -d stove99.gihub.io
이메일 입력하라 그라고 이것저것 몇 번 묻는데 다 y 로 하면 된다.
작업이 성공적으로 끝나면 인증서는 /etc/letsencrypt/live/도메인명 에 생성된다.
nginx 설정
예를들어 stove99.github.io 로 인증서를 발급받았다고 가정함.
#http 로 접속할 경우 https 로 리다이렉트 시킴
server {
listen 80;
server_name stove99.gihub.io;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name stove99.gihub.io;
ssl_certificate /etc/letsencrypt/live/stove99.gihub.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/stove99.gihub.io/privkey.pem;
location / {
...
}
}
nginx start
service nginx start
인증서 갱신 처리
인증서 유효기간이 3개월이기 때문에 인증서를 한 달에 한번 정도 갱신하도록 crontab 에 등록시킨다.
crontab 에 등록하기전에 먼저 인증서 갱신시 nginx 가 리스타트 되도록 설정이 필요하다.
vi /etc/letsencrypt/renewal/stove99.gihub.io.conf
## [renewalparams] 섹션에 pre_hook, post_hook 설정 추가
[renewalparams]
...
...
pre_hook = systemctl stop nginx
post_hook = systemctl start nginx
...
...
crontab 에 갱신작업 등록
crontab -e
## 한달에 한번씩 인증서가 갱신되도록 작업 추가
0 0 1 * * /bin/bash -l -c 'certbot renew --quiet'