linux/java, nodejs

node.js와 letsencrypt 연동하기

배움엔 끝이없다 2021. 5. 25. 16:48
728x90
반응형

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가 적용된것을 확인 할 수 있습니다.

728x90
반응형
LIST

'linux > java, nodejs' 카테고리의 다른 글

nodejs 설치  (0) 2021.05.20