Certbot을 사용할 것이다.sudo apt update
sudo apt install certbot python3-certbot-nginx
sudo apt install nginx
sudo yum update
sudo yum install certbot python3-certbot-nginx
sudo yum install nginx
python3-certbot-nginx를 설치함으로써 nginx와 통합하여 SSL/TSL 인증서를 발급, 설치, 구성, 재발급 작업을 자동화한다.sudo certbot --nginx
naver.com, www.naver.com
다음과 같이 입력한 도메인에 대한 인증서를 발급받을 수 있다.
필자는 인증서를 발급받은 적이 있으므로 별다른 과정을 거치지 않았지만 이메일 입력, ACME Server 등록 여부, 이메일 수신 여부 등을 선택하는 과정이 존재한다.
이때 ACME Server 등록은 동의를 하고, 이메일 수신 여부는 원하는대로 하면 된다.
인증서(certificate) 발급이 완료되었다고 뜨면, 개발자가 직접 해야하는 과정을 cerbot이 자동으로 수행한다.
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
proxy_pass http://localhost:8080;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
server {
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name persist-blog.site www.persist-blog.site; # managed by Certbot
location / {
proxy_pass http://localhost:8080;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/persist-blog.site/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/persist-blog.site/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 = www.persist-blog.site) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = persist-blog.site) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80 ;
listen [::]:80 ;
server_name persist-blog.site www.persist-blog.site;
return 404; # managed by Certbot
}
managed by Certbot주석처리가 되어있는 부분이 Certbot이 자동으로 설정한 부분이다.sudo certbot renew --dry-run
해당 명령어를 통해 nginx의 설정 파일이 올바른지 체크한다.
sudo nginx -t
테스트에 성공했으면, nginx를 재시작하여 Certbot을 이용해 설정한 HTTPS를 적용한다.
sudo systemctl reload nginx
