환경
Ubuntu 18.04
Nodejs
Express
1. certbot 을 설치해주자
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot
2. 실행
sudo certbot certonly --manual
3. 이메일 입력
처음 실행시키면 이메일 입력하라는 커맨드가 나올 것이다. 입력해주면 된다!
도메인 입력하라고 뜨기 전까지 Y.
4. 인증서를 발급할 도메인 주소 입력
http & https 빼고 그냥 도메인만 입력하자.
5. Y 입력하고 엔터!
6. 중요! 여기서 일단 멈춘다.
사진에서 a-string과 a-challenge내용은 다른 문자열이 적혀있을 것이다.
그냥 a-string과 a-challenge이라 부르겠다.
http://도메인/.well-known/acme-challenge/a-string 라는 내용이 보일 것이다.
저 주소로 요청을 보내어 인증서를 발급 할지 말지 인증을 하는 과정을 거치는 것 같았다.
그래서 우리는 접속 경로를 만들어 줘야한다.
7. 경로 폴더 & 파일 생성
프로젝트파일 root
ㄴ public
ㄴ .well-known
ㄴ acme-challenge
ㄴ 위 이미지 속 a-string 부분 복사해서 파일 이름으로 생성
8. 새로 생성한 a-string파일 내용으로 위 이미지의 a-challenge 라고 적힌 부분의 내용을 입력해주고 저장하자.
9. 그리고 기다리고 있었던 콘솔창 엔터!
그럼 위 사진과 같이 인증서가 발급 된 것을 알 수 있다.
sudo cd /etc/letsencrypt/live/도메인
위 경로로 들어가면 pem 파일이 있을 것이다.
10. app.js 파일에 붙여 넣어서 제대로 https로 접근이 가능한지 확인해보자!
/* 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');
});
sudo node app.js
아래 이미지와 같이 인증서가 유효하게 뜨는 것을 볼 수 있다.
'Develop > Node.js' 카테고리의 다른 글
PM2 80, 443포트 사용 (0) | 2020.06.20 |
---|---|
[Nodejs] Multer - Formdata 전송 (0) | 2020.05.25 |
[Nodejs] Sequelize - 설치 & 마이그레이션 (0) | 2020.05.18 |