1. 환경
OS | 웹 프레임워크 |
Ubuntu | NodeJS |
2. 포트포워딩
외부 | 내부 |
80 | 3000 |
443 | 4000 |
3. 인증서 발급
sudo apt update
sudo apt install letsencrypt -y
sudo certbot certonly --manual -d [도메인]
1) 몇가지 질문을 하는데 읽어보고 응답하자.
2) 토큰과 URL을 알려주는데 엔터를 누르지 않고 다음 단계를 진행한다.
3) 새 터미널을 열고 URL로 들어가면 토큰이 출력되도록 코딩한다.
// main.js
app.get('/.well-known/acme-challenge/알려준 URL', (req, res)=> {
res.send('알려준 키');
});
4) 원래 터미널로 돌아가 엔터를 친다.
5) 이 과정에서 뭔가 잘못되면 서버 컴퓨터를 재부팅하고 다시 시도하자.
4. 인증서 확인
su -
cd /etc/letsencrypt/live/도메인/
만약 인증서를 삭제하려면 위의 도메인 디렉토리를 삭제해버리면 된다.
5. 서버프로그램 작성: main.js
const fs = require('fs');
const http = require('http');
const https = require('https');
const httpsOptions = {
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(httpsOptions, app).listen(4000);
6. https 접속
443포트 서버는 일반권한으로는 실행시킬 수 없다. root 권한으로 접속한 후 서버를 실행시킨다.
7. 인증서 자동 갱신
crontab에 자동 갱신 명령을 추가한다.
1) 크론탭 편집
sudo crontab -e
편집기를 선택하라고 한다. 편리한 것을 선택한다.
2) 내용 추가
0 12 * * * /usr/bin/certbot renew --quiet
'컴퓨터' 카테고리의 다른 글
inetcpl.cpl (0) | 2019.04.01 |
---|---|
mongojs 모듈 (0) | 2019.03.30 |
003 Props 소품 (0) | 2019.03.18 |
002 Learn the Basics 기초 배우기 (0) | 2019.03.18 |
gethostbyaddr (0) | 2019.03.17 |