Let’s Encrypt nodejs 적용기
let’s encrypt는 설치하기 위해선 python 2.7 버전을 설치합니다.
아래는 파이썬과 certboot을 다운로드하는 과정(Git이 설치되지 않은경우 미리 설치를 진행해주셔야합니다.)
cd /usr/localyum install epel-releaserpm -ivh https://rhel6.iuscommunity.org/ius-release.rpmyum install git python27 python27-devel python27-pip python27-setuptools python27-virtualenv python27-libsgit 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 3080sudo 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 #노드설치위치
위 스크립트를 실행한 후 다시 시도해보세요.