Https 적용하기(Nginx, Let's Encrypt )

slee2·2022년 6월 30일
1

main

목록 보기
7/12

내 도메인 한국

도메인을 얻기 위해 내 도메인 한국 사이트에서 도메인을 생성했다. freenom같은 사이트도 좋지만, 개인적으로 이 사이트가 빠르고 무료로 편리하게 사용할 수 있었다.

해당 도메인에 A 레코드를 설정한다. EC2에서 Public IP를 넣으면 된다.

Nginx

가 설치되어있다고 가정하자면,

# nginx 설정 파일
sudo vi /etc/nginx/nginx.conf

# 파일 내부에 server_name만 입력한다.
server {
	server_name  도메인 이름;
}

Let's Encrypt

# 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

검사하는 과정에서 인증서 확인등 여러 과정을 거치고 보안관련까지 마치면 결과가 종합적으로 나온다.

물론 다 채우는 것이 좋긴 하지만, 보안으로 봤을때, 다 채우지 않아도 보안이 잘 되어있다고 볼 수 있기도 하고, 다 채우면 성능면에서 떨어질 수도 있다고 하니 타협을 하면 될 것 같다.

0개의 댓글