모듈 기본 모듈

모듈 SSL

SSL 모듈은 네트워크 연결의 SSL 하이퍼텍스트 전송 프로토콜을 설정하는 데 사용할 수 있는 fibjs의 내장 암호화 모듈입니다. 이 모듈은 클라이언트와 서버가 연결이 안전한지 확인할 수 있도록 암호화 확인을 제공합니다.

SSL 모듈에는 완전한 SSL 클라이언트/서버 통신 프로세스에 사용할 수 있는 여러 개체와 상수가 포함되어 있습니다. 일반적으로 사용되는 카테고리는 다음과 같습니다.

  1. SslSocket: 기본을 바탕으로Socket캡슐화된 SSL 소켓 개체를 사용하여 원격 서버와의 양방향 인증 및 기타 통신 작업을 수행할 수 있습니다.
  2. SslHandler: 데이터 스트림을 서버 측 서비스 구축에 적합한 SSL 스트림 프로토콜로 변환하는 데 사용되는 SSL 프로토콜 변환 프로세서.
  3. SslServer: 표준 다중 광섬유 SSL 서버 구축에 편리한 SSL 서버 개체입니다.

다음은ssl.Server예를 들어 SSL 모듈의 사용을 소개합니다.

ssl.ServerSSL 기반의 네트워크 서비스를 제공하는 기본 SSL 서버입니다. 사용ssl.ServerSSL/TLS 기반의 서버를 빠르게 생성할 수 있으며 기본적으로 TCP/HTTP 서비스의 모든 기능과 호환됩니다. 다음과 같은 특징이 있습니다.

  • 여러 도메인 이름 인증서, 와일드카드, SAN 인증서 및 기타 기능을 지원하는 X.509 인증서 관리자가 함께 제공됩니다.
  • TCP 서버와 인터페이스 및 사용법이 동일하며 상위 계층 코드는 SSL 연결과 TCP 연결의 차이를 신경 쓸 필요가 없습니다.
  • 모든 SSL/TLS 보안 프로토콜은 내장된 OpenSSL 라이브러리를 사용하여 구현됩니다.
  • SNI, ALPN 등의 프로토콜 확장 기능을 지원합니다.

간단한 예는 다음과 같습니다.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
const ssl = require('ssl'); const http = require('http'); const crypto = require('crypto'); // read cert and key let key = crypto.loadPKey('mycert.key'); let cert = crypto.loadCert('mycert.pem'); // create ssl server const svr = new ssl.Server(cert, key, 8080, s => { var data; while (data = s.read()) { console.log(`received data: ${data.toString()}`); s.write(data.toString().toUpperCase()); } }); // start server svr.start();

위 코드에서는 먼저 SSL 인증서와 개인 키 파일을 읽은 후 SSL 서버 인스턴스를 생성했습니다. 서버의 콜백 함수에서는 클라이언트 데이터를 받은 후 쓰기 함수를 통해 해당 데이터를 대문자로 변환한 후 클라이언트에 반환합니다.

물체

Socket

만들다SslSocket개체, 참조SslSocket

1
SslSocket ssl.Socket;

Handler

만들다SslHandler개체, 참조SslHandler

1
SslHandler ssl.Handler;

Server

만들다SslServer개체, 참조SslServer

1
SslServer ssl.Server;

정적 함수

connect

만들다SslSocket개체 및 연결 설정

1 2
static Stream ssl.connect(String url, Integer timeout = 0) async;

호출 매개변수:

  • url: 문자열, 다음과 같은 연결 프로토콜을 지정합니다: ssl://host:port
  • timeout: 정수, 시간 제한을 지정합니다. 단위는 밀리초이며 기본값은 0입니다.

결과 반환:


만들다SslSocket개체 및 연결 설정

1 2 3 4
static Stream ssl.connect(String url, X509Cert crt, PKey key, Integer timeout = 0) async;

호출 매개변수:

  • url: 문자열, 다음과 같은 연결 프로토콜을 지정합니다: ssl://host:port
  • crt:X509Cert, 클라이언트를 확인하기 위해 서버로 보내는 데 사용되는 인증서
  • key:PKey, 클라이언트와 대화하는 데 사용되는 개인 키
  • timeout: 정수, 시간 제한을 지정합니다. 단위는 밀리초이며 기본값은 0입니다.

결과 반환:


만들다SslSocket개체 및 연결 설정

1 2 3 4 5
static Stream ssl.connect(String url, Integer verification, X509Cert crt, PKey key, Integer timeout = 0) async;

호출 매개변수:

  • url: 문자열, 다음과 같은 연결 프로토콜을 지정합니다: ssl://host:port
  • verification: 정수, 인증서 확인 모드
  • crt:X509Cert, 클라이언트를 확인하기 위해 서버로 보내는 데 사용되는 인증서
  • key:PKey, 클라이언트와 대화하는 데 사용되는 개인 키
  • timeout: 정수, 시간 제한을 지정합니다. 단위는 밀리초이며 기본값은 0입니다.

결과 반환:


setClientCert

기본 클라이언트 인증서 설정

1 2
static ssl.setClientCert(X509Cert crt, PKey key);

호출 매개변수:

  • crt:X509Cert, 클라이언트를 확인하기 위해 서버로 보내는 데 사용되는 인증서
  • key:PKey, 클라이언트와 대화하는 데 사용되는 개인 키

loadRootCerts

함께 제공되는 기본 루트 인증서를 로드합니다. 이는 다음과 같습니다.ssl.ca.loadRootCerts

1
static ssl.loadRootCerts();

이 인증서의 내용은 http://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt 에서 가져옵니다.

정적 속성

ca

X509Cert, SSL 클라이언트 모드 확인 서버 인증서에 사용되는 글로벌 인증서

1
static readonly X509Cert ssl.ca;

verification

정수, 인증서 확인 모드를 설정합니다. 기본값은 VERIFY_REQUIRED입니다.

1
static Integer ssl.verification;

끊임없는

VERIFY_NONE

인증서 확인 모드, 확인 없음

1
const ssl.VERIFY_NONE = 0;

VERIFY_OPTIONAL

인증서 확인 모드, 선택적 확인, 확인 실패 허용

1
const ssl.VERIFY_OPTIONAL = 1;

VERIFY_REQUIRED

인증서 확인 모드는 확인이 필요하며 확인에 실패하면 중단됩니다.

1
const ssl.VERIFY_REQUIRED = 2;

BADCERT_EXPIRED

인증서 확인 결과, 인증서 시간 초과

1
const ssl.BADCERT_EXPIRED = 1;

BADCERT_REVOKED

인증서 확인 결과, 인증서가 폐지되었습니다.

1
const ssl.BADCERT_REVOKED = 2;

BADCERT_CN_MISMATCH

인증서 확인 결과, 인증서 이름이 잘못되었습니다.

1
const ssl.BADCERT_CN_MISMATCH = 4;

BADCERT_NOT_TRUSTED

인증서 확인 결과 인증서를 신뢰할 수 없습니다.

1
const ssl.BADCERT_NOT_TRUSTED = 8;