본문 바로가기

Back-end/JS

Let’s Encrypt nodejs 적용기

Let’s Encrypt nodejs 적용기

let’s encrypt는 설치하기 위해선 python 2.7 버전을 설치합니다.
아래는 파이썬과 certboot을 다운로드하는 과정(Git이 설치되지 않은경우 미리 설치를 진행해주셔야합니다.)

cd /usr/local
yum install epel-release
rpm -ivh https://rhel6.iuscommunity.org/ius-release.rpm
yum install git python27 python27-devel python27-pip python27-setuptools python27-virtualenv python27-libs
git clone https://github.com/certbot/certbot

certbot을 설치하여봅시다.

chattr -i /usr/bin/gcc /usr/bin/g++
cd /usr/local/certbot
/usr/local/certbot/certbot-auto certonly

nodejs경우는 standalone 방식으로 선택해줍니다.
이때 80번 포트와 433번포트는 다른 응용프로그램이 점유하지 않아야합니다.





성공화면입니다.

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

혹여 nodejs 포트가 80이나 433으로 열어둔게 아니라면 위처럼 포트를 맵핑하여줍니다.

var express = require('express');
var bodyparser = require('body-parser');
var app = express();
app.use(bodyparser.urlencoded({ extended: true }));
app.get('/', function (req, res) {
res.end('hello world?');
});
require('greenlock-express').create({
server: 'staging',
email: 'herryhan2435@gmail.com',
agreeTos: true,
approveDomains: [ 'domain.co.kr' ],
app: app
}).listen(3080, 3443);

server의 경우 처음 한번만 staging을 해준 후 'https://acme-v01.api.letsencrypt.org/directory'로 바꾸어줍니다.




초록색 자물쇠얻기 참 힘드네요.





혹시 계속 invalid cert가 뜨시는 분들은

rm -rf ~/letsencrypt/
sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/node #

위 스크립트를 실행한 후 다시 시도해보세요.