node.js와 letsencrypt 연동하기

| 2020년 1월 29일 | 0 Comments

안녕하세요 기술지원팀 박준영입니다.

 

Linux에서 node.js 설치와 letsencrypt를 연동해보도록 하겠습니다.

 

설치 환경은 cent 7에서 테스트 했습니다.

 

 

1. Node.js 설치

 

먼저 설치에 앞서 node.js란 무엇인지 알아보겠습니다. node.js는 개발용 언어인 자바스크립트를 서버에서도 사용할 수 있도록 설계한 사이트 스크립트 언어이자 소프트웨어 플랫폼을 말합니다.

또한 node.js와 같이 설치하는 npm(node package manager)node.js로 생성된 모듈을 웹이나 서버에서 다운로드 받아 설치하고 그 모듈들을 관리할 수 있는 프로그램이라고 할 수 있습니다. 그리고 명령어를 통하여 모듈, npm의 버전 설정을 할 수 있습니다.

 

 

# curl -sL https://rpm.nodesource.com/setup_12.x | sudo bash –

curl 명령어를 통하여 node.js 최신버전을 받아옵니다.

# yum -y install nodejs

그리고 node.js를 설치합니다.

# node -v

v12.14.1

다음 명령어를 통하여 설치된 node.js의 버전을 확인 할 수 있습니다. 확인 시 12.x 버전으로 설치되는 점 확인할 수 있습니다.

node.js를 설치하면 자동으로 npm이 설치됩니다.

# npm -v

v6.13.4

다음 명령어를 통하여 npm의 버전을 확인 할 수 있습니다.

 

 

https://rpm.nodesource.com/

 

위 사이트에 접속하면 node.js의 다양한 버전을 설치 할 수 있습니다.

 

 

2. Letsencrypt 설치

 

 

# yum -y install git

git을 설치해 줍니다.

# git clone https://github.com/letsencrypt/letsencrypt

letsencrypt를 다운로드 받습니다.

# cd /[letsencrypt설치경로]

letsencrypt가 설치된 경로로 들어갑니다. ex) cd /usr/local/src/letsencrypt

# ./letencrypt-auto certonly

인증서를 발급받습니다.

How would you like to authenticate with the ACME CA?

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

1: Spin up a temporary webserver (standalone)

2: Place files in webroot directory (webroot)

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel):

standalone 방식으로 선택합니다.

Enter email address (used for urgent renewal and security notices) (Enter ‘c’ tocancel):

메일 주소 입력합니다.(긴급갱신 및 보안알림 사용)

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

Please read the Terms of Service at

https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must

agree in order to register with the ACME server at

https://acme-v02.api.letsencrypt.org/directory

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

(A)gree/(C)ancel: A

약관에 동의하는지 묻는 질문입니다. Agree를 입력합니다.

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

Would you be willing to share your email address with the Electronic Frontier

Foundation, a founding partner of the Let’s Encrypt project and the non-profit

organization that develops Certbot? We’d like to send you email about our work

encrypting the web, EFF news, campaigns, and ways to support digital freedom.

– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –

(Y)es/(N)o:

이메일로 메일 받는 부분에 대해 묻는 부부입니다. 원하는대로 선택합니다.

Please enter in your domain name(s) (comma and/or space separated) (Enter ‘c’

to cancel):

도메인을 입력하는 란입니다. 소유하고 있는 도메인을 입력합니다.

 

 

 

3. Node.js 파일 생성 및 Letsencrypt 적용

 

# npm init

…(생략)

package name: (root)

version: (1.0.0)

description:

git repository:

author:

…(생략)

프로젝트를 생성하게되면 다음과 같이 입력하는 란이 나옵니다. 모두 enter를 입력하면 default 값으로 설정됩니다.

설정 후 packge.json 파일이 생성됩니다.

# vi packge.json

“name”: “root”,

“version”: “1.0.0”,

…(생략)

init packge.json 파일이 생성된 점 확인 할 수 있습니다.

# npm install express

ssl 적용을 위한 필요 모듈을 설치합니다. (설치 명령어입니다 : npm install [모듈])

* install 과정에서 저장소를 찾을 수 없다고 에러가 발생 시 “private”: true, 추가하면 해결할 수 있습니다.

Private 설정은저장소의 우연한 발행을 방지하기 위해 npm에서 패키지의 공개 여부를 지정하는 설정입니다.

# vi ssl.js

const express = require(‘express’); // const는 변수 선언입니다.

const https = require(‘https’);

const http = require(‘http’);

const fs = require(‘fs’);

const options = { // letsencrypt로 받은 인증서 경로를 입력해 줍니다.

ca: fs.readFileSync(‘/etc/letsencrypt/live/[도메인 이름]/fullchain.pem’),

key: fs.readFileSync(‘/etc/letsencrypt/live/[도메인 이름]/privkey.pem’),

cert: fs.readFileSync(‘/etc/letsencrypt/live/[도메인 이름]/cert.pem’)

};

const app = express();

http.createServer(app).listen(80);

https.createServer(options, app).listen(443);

app.get(‘/’, function(req, res){ // 사이트 접속 시 나오는 내용입니다.

res.send(‘Hello World’);

});

js파일을 생성합니다. 이름은 임의로 지으면 됩니다.

 

# node ssl.js

명령어를 통하여 js 파일을 실행 시킬 수 있습니다. 여기서 주의사항이 있습니다.

Node 라는 명령어를 통하 js 파일을 실행하게 되면 세션을 계속 유지해주어야 하는 번거로움이 있습니다.

편리함을 위해 forever라는 패키지를 설치하고 적용시켜 보겠습니다.

 

# npm -g install forever

 

# forever start ssl.js

forever start / stop [파일이름] 명령어를 통해 실행 정시 시킬 수 있습니다.

 

# forever list

-> 명령어로 실행중인 js 리스트를 확인 할 수 있습니다.

 

 

 

 

설정 후 정상적으로 https가 적용된것을 확인 할 수 있습니다.

 

감사합니다.

 

Category: 솔루션/IT기타

Avatar

About the Author ()