Certbot?
Certbot이란 SSL certificates를 발급해주는 프로그램이다.
정확히는 수동으로 관리되는 웹사이트에서 Let's Encrypt 인증서를 자동으로 사용하여 HTTPS를 활성화하는 무료 오픈 소스 소프트웨어 도구이다.
기존에는 https를 위하여 SSL 인증서를 구매해야 했지만, Certbot으로 개인용에서는 무료로 발급받을 수 있다.
공식 홈페이지
작업내용
본인은 현재 domain을 구매하여 AWS의 router53을 통해 DNS설정을 완료한 상태이다.
이제 해당 도메인을 https로 접근하게 하는 작업을 할 예정이다.
Nginx 설치
sudo yum install nginx
sudo service nginx start
ps -ef | grep nginx
nginx 설치, nginx 서비스 시작, 프로세스확인을 통해 정상적으로 nginx가 설치되었는지 확인한다.
Nginx Conf 설정
Nginx 버전에 따라 conf 설정하는 위치가 상이할 수 있다. 아래의 두 파일 중 하나에 기본 서버셋팅이 되어있다.
sudo vi /etc/nginx/nginx.conf
or
sudo vi /etc/nginx/conf.d/default.conf
해당 파일의 server block이 있다면 아래와 같이 수정하면 된다.
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name 본인 도메인 주소. 도메인이 없다면 _ 입력;
#access_log /var/log/nginx/host.access.log main;
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 $http_host;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
....
}
이렇게 설정하면 80포트로 요청이 들어올 경우 8080포트로 리다이렉트를 해주게 된다.
Certbot 설치
EPEL 설치
sudo wget -r --no-parent -A 'epel-release-*.rpm' http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/
홈 디렉토리에서 EPEL을 다운로드 한다. Certbot은 Dependency를 가지고 있는데 그거에 대한 설치를 미리해주는 것이다.
EPEL 레파지토리 패키지 설치
sudo rpm -Uvh dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-*.rpm
EPEL 활성화
sudo yum-config-manager --enable epel*
certbot 설치
sudo yum install -y certbot python2-certbot-apache
certbot-nginx 설치
sudo yum install certbot-nginx
ssl발급시 certbot이 nginx conf를 자동으로 핸들링 해주게 된다.
sudo certbot --nginx
이제 해당 명령어를 실행하였을 때, 본인의 이메일을 입력하고 약관에 동의하면 설치가 진행된다.
그리고 위의 nginx conf설정할 때 본인처럼 domain을 입력하였다면 아래와 같이 뜰 것이다.
Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: 내가입력한도메인.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):
본인은 1을 입력한 후 enter를 통해 진행하였다.
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for 도메인
http-01 challenge for 도메인
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/httpd/conf/httpd-le-ssl.conf
Deploying Certificate for example.com to VirtualHost /etc/httpd/conf/httpd-le-ssl.conf
Enabling site /etc/httpd/conf/httpd-le-ssl.conf by adding Include to root configuration
Deploying Certificate for 도메인 to VirtualHost /etc/httpd/conf/httpd-le-ssl.conf
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
방문자의 HTTP 연결도 허용한다면 1번, HTTPS만 허용한다면 2번을 누른 후 Enter.
이렇게 되면 Certbot은Nginx 구성을 수정한 후 완료보고를 한다.
nginx.conf 파일도 다시 확인해보면 certbot관련 설정이 추가된 것을 확인할 수 있다.
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/...; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/...; # managed by Certbot
include /etc/letsencrypt/...; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl...; # managed by Certbot
이제 HTTPS 적용은 완료되었다.
AWS에서 443 port를 허용해 준 후, nginx를 재기동하면 https로 접근할 수 있는 걸 확인할 수 있다.
아래의 블로그를 참고하면 인증서 갱신까지 crontab으로 자동화할 수 있다.
가뭄의 단비같은 블로그였다,,
참고 블로그
'server > 💻Server' 카테고리의 다른 글
Nginx로 Rate limit 설정 (0) | 2023.01.04 |
---|---|
CentOS7 에서 Java Selenium 크롤링 환경 세팅 (It must be an executable file 문제) (0) | 2022.10.11 |
스케일 아웃(Scale Out)이란? (0) | 2021.04.14 |
댓글