도메인을 얻기 위해 내 도메인 한국 사이트에서 도메인을 생성했다. freenom
같은 사이트도 좋지만, 개인적으로 이 사이트가 빠르고 무료로 편리하게 사용할 수 있었다.
해당 도메인에 A
레코드를 설정한다. EC2에서 Public IP
를 넣으면 된다.
가 설치되어있다고 가정하자면,
# nginx 설정 파일
sudo vi /etc/nginx/nginx.conf
# 파일 내부에 server_name만 입력한다.
server {
server_name 도메인 이름;
}
# EPEL 다운로드
# let's encrypt는 certbot을 이용하며, EPEL은 certbot에 필요한 의존성을 공급하는데 필요하다.
sudo wget -r --no-parent -A 'epel-release-*.rpm' http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/
# 리포지토리 패키지 설치
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
# 인증서 발급
# --email : 인증서 관련 안내 이메일을 전송 받는 이메일
# -d : 도메인
sudo certbot --nginx --agree-tos --redirect --staple-ocsp --email <email> -d <도메인>
다만 이 인증서는 90일간 유효하다.
만료가 된다면 다시 갱신을 해줘야하는데, 이를 스케쥴러를 통해 자동으로 할 수 있다.
# 인증서가 만료되었는지 확인
sudo certbot certificates
# 인증서 갱신 테스트, 성공하는지 확인한 뒤 나머지 작업 진행
sudo certbot renew --no-self-upgrade --dry-run
# 리눅스 스케쥴러인 crontab 사용
sudo vi /etc/crontab
# /etc/crontab
30 1,13 * * * root certbot renew --no-self-upgrade
# crontab 변경사항을 적용하기 위해 재시작
sudo systemctl restart crond
이후에 nginx 설정파일을 건들지 않아도 된다.
nginx를 재시작해준다.
sudo service nginx start
Redirecting to /bin/systemctl start nginx.service
이후에 접속하면,
성공적으로 실행되는 것을 확인할 수 있다.
인증서 또한 잘 작동하는 것을 확인할 수 있다.
정확한 확인은 이 사이트에서 할 수 있다.
https://www.ssllabs.com/ssltest/index.html
검사하는 과정에서 인증서 확인등 여러 과정을 거치고 보안관련까지 마치면 결과가 종합적으로 나온다.
물론 다 채우는 것이 좋긴 하지만, 보안으로 봤을때, 다 채우지 않아도 보안이 잘 되어있다고 볼 수 있기도 하고, 다 채우면 성능면에서 떨어질 수도 있다고 하니 타협을 하면 될 것 같다.