첫번째로 확인할 것은 본인의 EC2 인스턴스 인바운드 규칙이다.
실제로 앞으로 나올 모든 과정이 정상적으로 진행되었음에도
https로 도메인이 들어가지지 않아서 일주일 넘게 고민했는데,
알고보니 ec2 인스턴스의 443포트를 열어주지 않아서 그 고생을 했었다.
두번째로, 도메인을 구입해야 한다.
나는 가비아에서 bemystory.store라는 도메인을 구매했다.
.com이나 .kr로 끝나는 도메인은 비싼 편이니, 개발 공부 목적의 구입이라면 싼 도메인을 구입하는 것을 추천한다.
아래 링크에서 구매한 도메인을 어떻게 등록하는지 알 수 있다.
https://customer.gabia.com/manual/hiworks/113/1242
이제, Cerbot을 이용하여 Nginx 서버에 https를 적용해보자.
Certbot?
무료로 TLS 인증서를 발급해주는 비영리기관인 Let's encrypt에서 TLS 인증서 발급, 갱신을 도와주기 위해 만든 오픈소스 프로그램이다.
Amazon Linux 2023에서 HTTP(80포트)로 운영중인 Nginx 서버에 HTTPS(443)을 적용해보자.(다른 운영체제와 과정이 약간 다르다)
Nginx의 기본 설정은 다음과 같이 되어 있다.
server {
listen 80;
listen [::]:80;
server_name bemystory.store; #여기에 구매한 도메인 넣기
root /usr/share/nginx/html;
}
Certbot 설치
Amazon Linux 2023에서는 rpm package를 이용하여 certbot을 설치할 수 없다. (이것이 다른 운영체제와 다른 점)
따라서 Python package 관리도구인 pip로 설치한다.
(python이 설치되어 있지 않다면 먼저 python을 설치한다.)
Python venv 생성
아래 명령어를 실행하기 전에 su 명령어를 통해 root 계정으로 전환한다.
(root 계정으로 전환되면 $표시가 #으로 전환된다.)
[root@ip- ~]# python3 -m venv /opt/certbot
[root@ip- ~]# source /opt/certbot/bin/activate
Certbot Package 설치
(certbot) [root@ip ~]# pip install -U pip
(certbot) [root@ip ~]# pip install certbot certbot-nginx
Certbot을 이용한 인증서 발급
certbot이 자동으로 인증서를 발급하고, Nginx config 파일에 https 설정을 추가한다.
(certbot) [root@ip ~]# certbot --nginx
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices)
(Enter 'c' to cancel): abc@abc.xyz <<<----!!! 갱신 알림 및 보안 관련 알림을 위한 이메일 설정
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/ You must
agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y <<<----!!! 약관 동의 설정
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: n <<<----!!! 정보 공유 및 이메일 정보 수신 동의 설정
Account registered.
Which names would you like to activate HTTPS for?
We recommend selecting either all domains, or all domains in a VirtualHost/server block.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: bemystory.store
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1 <<<----!!! HTTPS 적용 도메인 설정
Requesting a certificate for bemystory.store
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/bemystory.store/fullchain.pem
Key is saved at: /etc/letsencrypt/live/bemystory.store/privkey.pem
This certificate expires on 2024-01-02.
These files will be updated when the certificate renews.
Deploying certificate
Successfully deployed certificate for bemystory.store to /etc/nginx/nginx.conf
Congratulations! You have successfully enabled HTTPS on https://bemystory.store
NEXT STEPS:
- The certificate will need to be renewed before it expires. Certbot can automatically renew the certificate in the background, but you may need to take steps to enable that functionality. See https://certbot.org/renewal-setup for instructions.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
* Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
* Donating to EFF: https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
이제 https://bemystory.store(HTTPS)로 로 접근할 수 있다.
'캡스톤프로젝트' 카테고리의 다른 글
[Spring/JPA] Slice를 사용한 무한 페이지네이션 (0) | 2023.09.29 |
---|---|
[HTTP Method] PUT vs PATCH 결정하기 (0) | 2023.09.22 |
졸업프로젝트, 태초마을로 돌아가다 (0) | 2023.09.02 |
[SpringBoot] 팔로워, 팔로잉 기능 구현하기 2 (0) | 2023.08.30 |
[SpringBoot] 팔로워, 팔로잉 기능 구현하기 1 (0) | 2023.08.24 |