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

사전 구성 환경

  • OpenSSL 라이브러리 http://www.openssl.org/ (TLS 1.2 지원 필수)
  • SHA-2(SHA256) 암호화 지원 모듈 구성/활성 확인 필수
  • SNI(Server Name Indication, 서버 이름 표시) 기능 OS/웹서버 운영/활성화 권장 (443공용)
  • 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 생성

⦁ SSL 인증서 발급 신청시, CSR 입력 단계에서 "CSR 자동생성" 선택시 수작업 생성 과정은 필요가 없습니다. (자동 이용 권장)
 ⦁ CSR 자동 발급 완료시, "개인키 / 서버인증서 / 체인인증서 / 루트인증서" 의 pem(crt,key), pfx, jks, p7b 파일이 첨부 제공됩니다.


- FAQ : 개인키(private key) 생성/보관 관련 참고 사항
- FAQ : SSL 발급 신청시 CSR 생성 관련 참고 사항
- FAQ : SSL 발급 신청시 도메인 형식 예제 및 참고 사항

※ 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)에 인증서 파일이 포함되어 있습니다.
- 서버 적용에 필요한 파일 정보는, zip 파일내 '발급내역서 및 루트/체인' PDF 에서 확인해야 합니다. (필수)
- 이후 과정 부터는, 서버에 SSL 인증서 설치/적용/확인 절차 입니다. (인터넷에 공개된 설정법과 차이 없음)
- 직접 설치/적용에 어려움이 있다면, 서버운영 전문업체 기술지원도 검토해 보시기 바랍니다 유료기술지원 확인하기

적용 예제 - PEM 포맷 (선택)

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

* 인증서 파일 정보 외 일부 Property 는 추천/고정 값이 아니므로 고객사별 선택적 환경에 따릅니다.
* 체인인증서+루트인증서 조합된 root-chain-bundle.pem 파일은 발급완료 zip 파일에 첨부되어 있습니다.

적용 예제 - pfx 포맷 (선택) (CSR 자동생성 발급)

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

* 인증서 파일 정보 외 일부 Property 는 추천/고정 값이 아니므로 고객사별 선택적 환경에 따릅니다.
* CSR 자동생성 발급의 경우, .pfx 포맷 파일도 첨부 제공되며, 첨부된 .pfx 파일 가져오기를 하면 됩니다.
* 제공되는 .pfx 파일에는 "개인키+서버인증서+체인인증서+루트인증서" 가 모두 포함되어 있습니다.

설치 적용 확인

- 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 2023. All rights reserved.