TIL

Http->Https ,nginx, node.js, ubunt

흙으로만든형 2022. 8. 27. 13:50

 

Step 1

기본 서버 구축하기

AWS ec2 

ubuntu

github

파일질라

 

 

Step2

HTTP->HTTPS

(feat. Let's Encrypt)

Certbot 

 

최신 버전 저장소 사용

Certbot을 위한 repository 추가

$ sudo apt update

$ sudo apt upgrade

$ sudo add-apt-repository ppa:certbot/certbot

 

Certbot Nginx package install

$ sudo apt install python-certbot-nginx

 

Nginx Configuration

$ sudo vim /etc/nginx/sites-available/default

 

Nginx test

$ sudo nginx -t

 

Nginx reload

$ sudo systemctl reload nginx

 

$ sudo ufw status

방화벽 HTTPS 허용 (AWS EC2 인스턴스는 기본으로 방화벽 비활성화 되어있음)

 

Nginx Plugin을 통한 인증서 획득

$ sudo certbot --nginx -d _

("_"부분에 자신의 도메인을 적는다 도메인이 복수일 경우는 스페이스바 후 -d "_")

 

$ sudo service nginx restart

 

 

 

 

실행 과정중~

$ sudo certbot --nginx -d _ 에서 에러발생

이틀 동안 구글링 결과 실패 새로운 방법을 시도

AWS ec2 인스턴스를 종료시킨후 새로 시작하였음

 

 

$ sudo add-apt-repository ppa:certbot/certbot 과정에서 에러 발생

https://askubuntu.com/questions/1385440/ubuntu-sudo-apt-get-update-404-not-found-problem

 

askubuntu 사이트에서 문제해결

 

$ sudo apt install python-certbot-nginx 과정에서 패키지가 제대로 설치되지 않음

--> sudo apt install python3-certbot-nginx 로 바꿔 해결

$ sudo vim /etc/nginx/sites-available/default

에서 sever_name 뒤 "_"부분만 나의 도메인으로 수정

vim 간단 명령어 :     i  // insert   , esc // cancel , :w //save  , :q //quit 

 

$ sudo nginx -t

로 결과 확인

$ sudo systemctl reload nginx

리로드

$ sudo ufw status

방화벽 비활성화 확인

 

$ sudo certbot --nginx -d "_"

도메인 주소 입력 인증서 획득과정1. 이메일 입력 , 2.인증서 동의 3. 관련뉴스 동의1. 나의이메일2. A (agree)3. N (No)

 

다음 선택사항에서

  1. HTTP 연결을 HTTPS로 리다이렉트 하지 않음
  2. HTTP 연결을 HTTPS로 리다이렉트함

2번 선택

 

후 EC2 인바운드 규칙 편집 443,80 등 안열어준거 열어재끼기


추가로 다시 인스턴스를 새로 배포하여 다시하려니까 

이러한 에러 문구가 뿜어져 나온적이 있다. 

이때는 방화벽 비활성화(inactive) 되어있는지 확인 ( $ sudo ufw status ) 하고 뭔가 있으면

$ ufw delete rule_number  // ex) ufw delete 1 , ufw delete 2

으로 지운다 그래도 안되면 거의 포트 포워딩 문제 일 가능성이 크다

(포트 포워딩 상태 확인)

 

(포트 포워딩 지정)

$ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000

 

(포트 포워딩 취소)

$ sudo iptables -D PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000

or

$ sudo iptables -t nat -D PREROUTING rule_number

//ex) sudo iptables -t nat -D PREROUTING 1

이렇게  해당 포트의 chain rule_number로 지울 수 있다.

 

(iptables help 명령어)

$ sudo iptables -h

 

포트 포워딩까지 지우고 다시 

sudo certbot --nginx -d abcdefg.com -d www.abcdefg.com

 

그러면

 

성공!

$ sudo service nginx restart

모든 설정 완료후 재시작!!

 

 

proxy 설정은 아래 윤성님 블로그 참고!

 

이후 TEST

www.ssllabs.com/ssltest/

 

SSL Server Test (Powered by Qualys SSL Labs)

SSL Server Test This free online service performs a deep analysis of the configuration of any SSL web server on the public Internet. Please note that the information you submit here is used only to provide you the service. We don't use the domain names or

www.ssllabs.com

 

 

https://jminie.tistory.com/104

 

AWS Nginx에 HTTPS 적용하기 (Let's Encrypt)

이 포스팅은 앞 포스팅들에 이어지는 글이다. AWS에 Nginx, MySQL, PHP 구축 및 Nginx - PHP 연동 MySQL 외부 접속 - MySQL Workbench 사용 AWS에 PHPMyAdmin 설치하기 도메인 구입(가비아) 및 설정 📌 HTTP란? H..

jminie.tistory.com

여기 은사님 블로그를 알려주신 윤성님https://rmadbstjd.tistory.com/12 감사합니다