certbot 설치 및 pem 키 생성
# certbot 설치
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot
# 실행
sudo certbot certonly --manual
위 명령어를 실행하면 메뉴얼대로 입력을 해야하는데
잘읽어보고
1. 이메일
2. 적용할 도메인
3. public 파일 생성
을 잘 따라하면 성공적으로 생성된다는 메세지가 아래와같이 나온다.
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/입력한도메인/fullchain.pem
Key is saved at: /etc/letsencrypt/live/입력한도메인/privkey.pem
This certificate expires on 2022-09-05.
These files will be updated when the certificate renews.
NEXT STEPS:
- This certificate will not be renewed automatically. Autorenewal of --manual certificates requires the use of an authentication hook script (--manual-auth-hook) but one was not provided. To renew this certificate, repeat this same certbot command before the certificate's expiry date.
pem 키 접근 권한 설정
# Change group of all letsencrypt files to 접속한사용자
sudo chgrp -R 접속한사용자 /etc/letsencrypt/*
# Make sure all directories and files are group readable.
sudo chmod -R g+rx /etc/letsencrypt/*
위 권한 설정을 안해주면 fs 모듈로 파일 읽기에서 permission denied 된다.
App.js 수정하기
여기서 중요한 점은 하단에 포트가 80, 443 을 열고있는데,
root 계정이 아니고서야 1024 이하의 포트를 개방할 권한이 없다.
그렇기 때문에 다른 포트로 개방한다음, ubuntu에서 포트포워딩을 통해서 연결해주어야한다.
❗그리고 반드시 잊지 말아야 할 것은 , 인바운드 규칙에서 443포트, 80포트를 개방해야한다.
/* app.js */
// Dependencies
const fs = require('fs');
const http = require('http');
const https = require('https');
const express = require('express');
const app = express();
// Certificate 인증서 경로
const privateKey = fs.readFileSync('/etc/letsencrypt/live/도메인 입력/privkey.pem', 'utf8');
const certificate = fs.readFileSync('/etc/letsencrypt/live/도메인 입력/cert.pem', 'utf8');
const ca = fs.readFileSync('/etc/letsencrypt/live/도메인 입력/chain.pem', 'utf8');
const credentials = {
key: privateKey,
cert: certificate,
ca: ca
};
app.use((req, res) => {
res.send('Hello there !');
});
// Starting both http & https servers
const httpServer = http.createServer(app);
const httpsServer = https.createServer(credentials, app);
httpServer.listen(80, () => {
console.log('HTTP Server running on port 80');
});
httpsServer.listen(443, () => {
console.log('HTTPS Server running on port 443');
});
반응형
'Archive' 카테고리의 다른 글
React Native 개발환경 (0) | 2022.06.07 |
---|---|
React 배포시 refresh -> 404 문제 (0) | 2022.06.07 |
Ubuntu 포트 포워딩 설정 (0) | 2022.06.07 |
EC2에 도메인 입히기 & DNS 에 대해서 (0) | 2022.06.07 |
React Custom Hook return Array vs Object 차이 (0) | 2022.06.07 |