coding/Node.js

express HTTPS 설정

JIN_Coder 2022. 8. 20. 22:50

1. express를 이용해 서버를 배포하고, 인스턴스 환경에 접속한다.

 

2. 포트 포워딩(80 => 3000)

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

 

3. pm2 설치

npm install -g pm2

 

4. 인증서 설치 준비

app.js가 설치된 디렉터리로 이동(같은 위치)

// 인증서 설치
sudo apt-get install letsencrypt

 

4.2 인증서를 받을 폴더 생성

// 폴더 생성
mkdir public
mkdir -p .well-known/acme-challenge

 

5. app.js 수정

// 코드 추가

app.use(express.static('public'));

 

6. 깃허브 푸시 후 인스턴스에서 풀 하여 파일 동기화

 

7. 서버 실행

sudo -s

pm2 start app.js

exit

 

8. 인증서 생성

certbot certonly --webroot -w ./public -d (내 도메인)

성공 화면

EC2 서버 /etc/letsencrtpy/live 경로에 내 도메인 이름으로 폴더 생성 + 폴더 내부에 인증서 생성!

 

9. https 포트 열어주기

https는 기본으로 443 포트를 사용

 

10. 인증서 적용

// app.js 내 코드 추가

const fs = require('fs');
const http=require("http");
const https=require("https");

const options = {
  ca: fs.readFileSync('/etc/letsencrypt/live/내 도메인 네임/fullchain.pem'),
  key: fs.readFileSync('/etc/letsencrypt/live/내 도메인 네임/privkey.pem'),
  cert: fs.readFileSync('/etc/letsencrypt/live/내 도메인 네임/cert.pem')
};


http.createServer(app).listen(3000);
https.createServer(options, app).listen(443);

app.js 내에 코드를 추가하고, 기존의 app.listen(port, () => {}는 주석처리

 

11. 깃허브에 푸시 후 인스턴스에서 깃 풀 하여 코드 동기화

 

12. 서버 재시작

sudo -s

sudo pm2 restart app.js

exit

 

sudo를 사용해 강제 시작하는 이유는 인증서 파일에 접근이 불가하여 강제로 접근해서 열어준다.

이 부분은 좋은 방향은 아니어서 추가적인 설정이 필요하다고 한다.

 

13. 도메인 접속시 https://도메인 으로 접속

 

 

 

 

 

[Node.js] express HTTPS 설정 ( cerbot )

사전 준비 노드 서버 구축은 아래의 포스팅을 참조! [AWS] Node.js, MongoBD 환경 구축 1. ec2 구매  - 구매 후 포트 설정 2. ec2 접속  - git bash 실행 sudo chmod 400 키페어 ssh -i 키페어 ubuntu@aws ip  ..

firstquarter.tistory.com

 

아래 방법은 하다가 실패

 

(Express) letsencrypt를 사용하여 https 적용하기

예전에 한 번 적용했다가 90일 만료 이후 갱신하는 과정에서 남기는 후기 먼저 HTTPS와 HTTP의 차이? HTTPS는 HTTP를 바탕으로 S(secure layer)가 붙어 동작한다. Web 주소창에 초록색 자물쇠가 적용되어 있

jsp-dev.tistory.com

 

'coding > Node.js' 카테고리의 다른 글

Sequelize Op like - 검색 기능  (0) 2022.08.23
페이지네이션  (0) 2022.08.23
비밀번호 암호화 - bcrypt  (0) 2022.08.17
swagger 설치 및 설정 기본 사용법  (0) 2022.08.17
CORS 사용방법  (0) 2022.08.14