728x90
반응형
항해 99 미니 프로젝트 진행 중 프런트 분들이 강의대로 하다 보니 versel이란 것을 사용하여 프런트 웹페이지 배포를 하셨는데 이게 하필 https만 지원하여 http로만 배포해 본 백엔드가 난처한 상황이 나오고, 결국 배포를 하지 못한 조가 나오는 참사가 벌어졌었다.. 이후 클론 프로젝트 진행하며 썼던 글을 다시 정리해보려고 한다.
처음 할 일
- SSL 인증서를 무료로 발급해 주는 Let’s Encrypt를 사용할 계획
- Let’s Encyrpt는 Certbot 사용을 권장
- 시작하기 전에 ec2 인스턴스 보안탭에서 443번 포트를 IPv4로 열어 주어야 합니다.
- 그리고 포트포워딩을 위해 아래 명령어를 먼저 입력 후 진행
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3000
맨 마지막에 들어가는 3000은 진행 중인 프로젝트의 포트번호를 넣어준다. (포트포워딩 알아보기)
필요한 패키지 설치하기
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot
인증서 발급받기
sudo certbot certonly --manual -d '*.도메인주소' -d 도메인주소 --preferred-challenges dns
입력하고 나면 인증받을 이메일을 입력하라는 문구가 나오고, 입력하고나면 아래와 비슷한 화면이 나온다.
DNS인증하는 과정이므로 위에 쓰여있는 Press Enter to Continue는. DNS 인증 후 해준다.
필자는 가비아로 도메인을 등록하여 가비아로 설명한다.
마이 가비아 → 관리 → DNS정보 → 도메인 연결 → 설정 버튼을 누른 뒤 레코드 수정버튼 클릭
위와 같이 DNS 설정 완료 후 설정 시간을 조금 기다린 후 엔터를 눌러 진행합니다. (총 2회 진행)
/etc/letsencrypt/live/도메인주소/fullchain.pem
/etc/letsencrypt/live/도메인주소/privkey.pem
/etc/letsencrypt/live/도메인주소/cert.pem
정상적으로 발급이 완료되었다면 위 경로에 인증서가 생성됩니다.
인증서 사용하여 배포하기
const fs = require('fs');
const HTTPS = require('https');
const port = 3000;
// 운영 환경일때만 적용
if(process.env.NODE_ENV == "production"){
try {
const option = {
ca: fs.readFileSync('/etc/letsencrypt/live/{myurl}/fullchain.pem'),
key: fs.readFileSync('/etc/letsencrypt/live/{myurl}/privkey.pem'),
cert: fs.readFileSync('/etc/letsencrypt/live/{myurl}/cert.pem')
};
HTTPS.createServer(option, app).listen(port, () => {
console.log('HTTPS 서버가 실행되었습니다. 포트 :: ' + port);
});
} catch (error) {
console.log('HTTPS 서버가 실행되지 않습니다.');
console.log(error);
}
}else{
app.listen(port, () => {
console.log('HTTP 서버가 실행되었습니다. 포트 :: ' + port);
});
}
키파일은 관리자 권한으로 되어있으므로 서버 실행 시 관리자 권한으로 실행시켜 준다.
sudo node app.js
728x90
반응형
'DevOps > AWS' 카테고리의 다른 글
AWS CodeDeploy를 Node.js환경에서 Github Actions에서 사용하기! (0) | 2023.03.18 |
---|---|
How to Ubuntu Portforwarding ? (0) | 2023.03.16 |
AWS 배포하기 (0) | 2022.10.01 |