HelloMinchan
처음처럼
HelloMinchan
LinkedIn
전체 방문자
오늘
어제
  • 분류 전체보기 (306)
    • Backend (4)
      • NestJS (1)
      • Express (1)
      • Spring (2)
    • Infrastructure (1)
      • AWS (1)
    • Frontend (1)
      • Next.js (1)
    • Language & Runtime (4)
      • Java (2)
      • Node.js (2)
    • Computer Science (8)
      • Computer Networks (3)
      • Operating Systems (4)
      • OOP (1)
    • 독서 (4)
      • 데이터 중심 애플리케이션 설계 (3)
      • 객체지향의 사실과 오해 (1)
    • 회고 (4)
      • Project (2)
      • Career (2)
    • Deprecated (280)

채널

  • GitHub
  • LinkedIn

최근 글

태그

  • 프로그래밍
  • 백준Go
  • 알고스팟Python
  • programmers
  • front-end
  • 코딩
  • 데이터베이스
  • Baekjoon Online Judge
  • 개발자
  • 백준
  • 백엔드
  • 프로그래머스C++
  • 프로그래머스Python
  • Algospot
  • Database
  • 프로그래머스
  • 백준Python
  • 백준C++
  • back-end
  • 알고스팟

최근 댓글

인기 글

hELLO
HelloMinchan

처음처럼

[Node.js] 무료 SSL 인증서 적용 및 HTTPS 서버 구축 방법
Deprecated

[Node.js] 무료 SSL 인증서 적용 및 HTTPS 서버 구축 방법

2020. 2. 9. 02:27

© OpenJS Foundation. All Rights Reserved.

[Node.js] 무료 SSL 인증서 적용 및 HTTPS 서버 구축 방법

(Greenlock Express 버전 : 2.8.8, 글쓴날 : 2020.02.09)

 


* 글 쓴 날 기준으로 Greenlock Express는 버전4~까지 나온 상태이지만 이 글에서는 버전2.8.8을 사용합니다.

* SSL 인증서 적용을 위해서는 ip주소가 아닌 도메인이 필요합니다!


 

 

1. SSL 인증서 적용하기


1) SSL 인증서 선택하기

SSL 인증서는 수많은 선택지가 있으며, 크게 무료와 유료로 나뉩니다.

무료 인증서의 경우 해당 인증서를 적용하여 서비스 도중 보안 문제가 발생하여 피해를 입었을 시 배상금 및 보증책임을 지지 않는 조건으로 보급하고 있습니다.

(보통의 경우이므로 자세한 것은 아래의 공식 홈페이지를 참조해주세요!)

이 글에서는 Let's Encrypt에서 제공하는 무료 SSL 인증서를 사용합니다.

 

* 무료

Let's Encrypt(우리가 사용할 인증서!) : Let's Encrypt 공식 홈페이지

WoSign : WoSign 공식 홈페이지

AWS Certificate : AWS Certificate 공식 홈페이지

CloudFlare SSL : CloudFlare SSL 공식홈페이지

 

* 유료

Verisign : Verisign 공식 홈페이지 
GoDaddy : GoDaddy 공식 홈페이지
GlobalSign : GlobalSign 공식 홈페이지

Comodo(Sectigo) : Comodo(Sectigo) 공식 홈페이지
Thawte : Thawte 공식 홈페이지
GeoTrust : GeoTrust 공식홈페이지
DigiCert : DigiCert 공식 홈페이지


2) certbot-auto 설치 (Let's Encrypt, SSL 인증서 발급 및 갱신 프로그램)

wget https://dl.eff.org/certbot-auto

 

* Certbot 공식 홈페이지 : Certbot 공식 홈페이지

 

Certbot

Different Internet services are distinguished by using different TCP port numbers. Unencrypted HTTP normally uses TCP port 80, while encrypted HTTPS normally uses TCP port 443. To use certbot –webroot, certbot –apache, or certbot –nginx, you should have an

certbot.eff.org


3) certbot-auto 접근 권한 설정

chmod 755 certbot-auto (실행 가능하게만 설정하시면 됩니다.)


4) certbot-auto 실행

(실행하기 전 켜놓은 서버가 있으시다면 종료하여 HTTP포트(80), HTTPS포트(443)를 비워주세요!)

sudo ./certbot-auto certonly --standalone


5) 도메인 입력 및 기타 절차

인증서를 적용할 도메인을 입력해주세요. 만약 서브 도메인이 있으시면 ,(쉼표) 혹은 띄어쓰기로 구분하여 차례로 적어주시면 됩니다.

인증서를 적용할 도메인을 입력해주시면 됩니다.

그 후

 

사용자 이메일 입력, 서비스 약관 동의 확인, 이메일로 수신 여부 확인 같은 절차를 거치면 잠시 후...

 

Congratulations!

 

라는 글과 함께 인증서가 발급됩니다!


 


 

2. HTTPS 서버 구축하기


1) Greenlock Express 패키지 설치 (주의! version : 2.8.8)

npm install greenlock-express@2.8.8

 

* npm 및 패키지 설치에 관해 궁금하시다면 ☞ [Node.js] npm 소개와 설치 및 사용법

 

* Greenlock 공식 홈페이지 : Greenlock 공식 홈페이지

 

Greenlock™

Why you need HTTPS SSL Certificates are required for secure login, accepting payments, and for browsers like Google Chrome to stop showing security warnings to your users.

greenlock.domains

* Greenlock Express npm 주소 : Greenlock Express npm 주소

 

greenlock-express

Free SSL and managed or automatic HTTPS for node.js with Express, Koa, Connect, Hapi, and all other middleware systems.

www.npmjs.com


2) SSL 인증서 설정 객체 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// SSL 인증서 설정 객체 생성 (Let's Encrypt)
const lex = require('greenlock-express').create({
    version: 'draft-11', // 인증서 버전 (버전2)
    configDir: '/etc/letsencrypt', // 인증서 pem 위치
    server: 'https://acme-v02.api.letsencrypt.org/directory',
    approveDomains: (opts, certs, cb) => {
      if (certs) {
        opts.domains = ['example.com', 'www.example.com']; // 도메인 및 서브 도메인까지 입력
      }
      else {
        opts.email = 'example@example.com'; // 사용자 이메일 입력
        opts.agreeTos = true;
      }
      cb(null, { options: opts, certs });
    },
    renewWithin: 81 * 24 * 60 * 60 * 1000,
    renewBy: 80 * 24 * 60 * 60 * 1000,
});

3) redirect-https 패키지 설치

(클라이언트에서 HTTP로 접속시 HTTPS로 자동 리다이렉트 해주는 패키지입니다.) 

npm install redirect-https


4) 서버 실행 코드 작성

1
2
https.createServer(lex.httpsOptions, lex.middleware(app)).listen(process.env.SSL_PORT || 443);
http.createServer(lex.middleware(require('redirect-https')())).listen(process.env.PORT || 80);

 


 

여기까지 Node.js에서 무료 SSL 인증서 적용 및 HTTPS 서버 구축 방법이었습니다.

 

실제 저의 프로젝트에 적용 중입니다!

 

이 글은 Node.js 및 Linux 환경에 익숙하신 분들을 대상으로 작성한 글이어서 다소 어려울 수 있으나, 위의 과정을 천천히 따라오시다 보면 문제없이 Node.js 환경에서 무료로 HTTPS 서버를 구축하실 수 있으실 겁니다.

감사합니다!

'Deprecated' 카테고리의 다른 글

[Go] Go 언어 소개와 설치 및 컴파일 방법  (4) 2020.02.12
[Node.js] PM2 소개와 설치 및 사용법  (0) 2020.02.11
[Node.js] npm 소개와 설치 및 사용법  (3) 2020.02.10
[React Native] React Navigation 설치 및 사용법  (12) 2020.02.07
블로그 첫 시작 첫 글  (2) 2020.02.07
    'Deprecated' 카테고리의 다른 글
    • [Node.js] PM2 소개와 설치 및 사용법
    • [Node.js] npm 소개와 설치 및 사용법
    • [React Native] React Navigation 설치 및 사용법
    • 블로그 첫 시작 첫 글
    HelloMinchan
    HelloMinchan
    Though you should not fear failure, You should do your very best to avoid it.

    티스토리툴바