Node.js SSL 인증서 설치/적용 가이드

사전 구성 환경

  • OpenSSL 라이브러리 http://www.openssl.org/ (TLS 1.2 지원 필수)
  • TLS 1.2 / SHA-2(sha256RSA) 암호화 지원 모듈 구성/활성 확인 필수
  • MD5, RC4 등 국제 보안 기구에서 해제를 권장하는 취약한 암호화 모듈 비활성화
  • SSL 2.0, 3.0 및 TLS 1.0 1.1 프로토콜 접속 허용 해제. 최신 TLS 1.2 1.3 설정 권장

진행 과정

  1. CSR(Certificate Signing Request) 생성
  2. 인증서 발급 신청 제출
  3. 인증서 발급 완료 (발급내역서/파일설명서 PDF 참조)
  4. 인증서 설치 적용 - 신규,갱신,재발급,도메인추가
  5. 서버 정상 적용 완료 테스트
  6. 웹페이지에 https:// 링크 적용

CSR(Certificate Signing Request) 생성

- SSL 인증서 발급 신청서 작성시, CSR 입력 단계에서 "CSR 자동생성" 선택시 현재 과정은 필요 없습니다.
- CSR 자동생성 발급 완료시, "개인키, 서버인증서, 체인인증서, 루트인증서" 의 pem, pfx, jks 파일이 포함되어 있습니다.
- FAQ : 개인키(private key) 생성/보관 관련 참고 사항
- FAQ : SSL 발급 신청시 CSR 생성 관련 참고 사항

- CSR 직접 생성이 필요한 경우, Apache 매뉴얼의 Key/CSR 부분을 참고하세요


Single

CN : sub.example.com 처럼 FQDN 도메인 형식 이어야 합니다.

Wildcard

CN : *.example.com 과 같은 패턴 이어야 합니다.

MultiDomain

CN : example.com 대표성을 가진 FQDN 도메인 1개만 입력 합니다.
SAN : 인증서에 포함될 나머지 FQDN 도메인은, 신청서 작성중 DCV 설정 단계에서 추가 입력합니다.

Multi-Wildcard

CN : example.com 대표 루트 도메인 1개을 CN으로 입력 합니다.
SAN : *.example.com 형식의 와일드카드 도메인은, 신청서 작성중 DCV 설정 단계에서 추가 입력합니다.

인증서 발급 완료

- 발급 완료 후에는, 메일첨부 또는 주문상세의 압축파일(zip)에 인증서 파일이 포함되어 있습니다.
- 서버 적용에 필요한 파일들에 대해서, 발급 내역서 PDF 및 루트/체인 설명 PDF를 통해서 미리 숙지해야 합니다.
- 이후 과정 부터는, 서버에 SSL 인증서 설치/적용/확인 절차 입니다. (인터넷에 공개된 설정법과 차이 없음)
- 직접 설치/적용에 어려움이 있다면, 서버운영 전문업체 기술지원도 검토해 보시기 바랍니다 유료기술지원 확인하기

PEM 포맷 적용 예제

const https = require('https');
const fs = require('fs');
const options = {
  key: fs.readFileSync('인증서경로/sslcert.co.kr_xxxxx.key.pem'), (개인키 지정)
  cert: fs.readFileSync('인증서경로/sslcert.co.kr_xxxxx.crt.pem'), (서버인증서 지정)
  ca: fs.readFileSync('인증서경로/ca-chain-bundle.pem'), (루트체인 지정)
  minVersion: "TLSv1.2" (서버 환경에 따라 선택적 적용)
};
https.createServer(options, (req, res) => {
  res.writeHead(200);
  res.end('hello SecureSign\n');
}).listen(8000);

* 인증서 파일 정보외 나머지는 기본값이며, 추천/고정 값이 아니므로 고객사별 설정에 따릅니다.
* 루트/체인 인증서는 상품별로 차이가 있으므로, 발급 완료시 첨부된 파일 내역에서 확인 가능합니다.

pfx 포맷 적용 예제

const https = require('https');
const fs = require('fs');
const options = {
  pfx: fs.readFileSync('인증서경로/sslcert.co.kr_xxxxx.pfx'),
  passphrase: 'pfx 패스워드 지정'
  minVersion: "TLSv1.2" (서버 환경에 따라 선택적 적용)
};
https.createServer(options, (req, res) => {
  res.writeHead(200);
  res.end('hello SecureSign\n');
}).listen(8000);

* 인증서 파일 정보외 나머지는 기본값이며, 추천/고정 값이 아니므로 고객사별 설정에 따릅니다.
* pfx 는 CSR 자동생성 신청시 발급완료 첨부해 드립니다. (패스워드 미지정 또는 잘못된값은 Error: mac verify failure 발생하므로 유의)

설치 적용 확인

- SSL 설정 적용 후, Node.js 서버를 재시작하여 정상 구동이 되는지 확인이 필요합니다.

- 서버 데몬 시작시 SSL 설정 관련 오류,경고가 있는지 콘솔/데몬/이벤트 로그 확인이 필요합니다.
- 서버 로컬에서 설정한 HTTPS 포트가 활성화 되어 있는지 netstat 등으로 확인해야 합니다.
- 외부에서 HTTPS 포트 접속이 되지 않는 다면 보안설정(방화벽등) 허용을 확인해야 합니다.
- L4 분산 환경은, HTTPS 패킷을 수신하는 모든 노드 웹서버에 SSL 적용이 필요합니다.
- L7 라우팅 환경은, L7 에도 HTTPS 활성 및 SSL 인증서 설정이 필요합니다. (장비별 자체 매뉴얼 참조)

- SSL 발급 도메인 웹페이지에 https:// 링크 적용을 별도 진행해야 최종적으로 SSL 암호화가 적용됩니다. (개발자,웹디자이너)
- PC 및 스마트폰의 "Chrome / Firefox / IE / Edge" 각 웹브라우져에서 "루트,체인,SSL,TLS" 경고가 발생 하는지 확인해야 합니다.

SSL 설치/적용 트러블슈팅 SSL 설치 적용 확인 하기 체인인증서 적용 여부 확인 인증서 포맷 변환 방법

참고 추가 자료

컨텐츠의 무단 전제복사 및 이메일 주소의 수집/이용을 허용하지 않습니다.
bitSyrup 2021. All rights reserved.