Mòdul mòdul bàsic

mòdul ssl

El mòdul ssl és un mòdul de xifratge integrat de fibjs, que es pot utilitzar per establir el protocol de transferència d'hipertext SSL d'una connexió de xarxa. Aquest mòdul proporciona verificació criptogràfica perquè els clients i servidors puguin assegurar-se que la connexió és segura

El mòdul ssl conté múltiples objectes i constants que es poden utilitzar per a un procés complet de comunicació client/servidor SSL. Les categories més utilitzades són:

  1. SslSocket: Basat en el subjacentSocketL'objecte de sòcol SSL encapsulat es pot utilitzar per dur a terme l'autenticació bidireccional i altres operacions de comunicació amb el servidor remot.
  2. SslHandler: Processador de conversió de protocol SSL, utilitzat per convertir fluxos de dades en protocols de flux SSL, adequat per crear serveis del costat del servidor.
  3. SslServer: objecte de servidor SSL, convenient per crear un servidor SSL multifibra estàndard.

El següent ésssl.ServerCom a exemple, introduïm l'ús del mòdul ssl.

ssl.ServerÉs un servidor SSL bàsic que proporciona un servei de xarxa basat en SSL. utilitzarssl.ServerLa classe pot crear ràpidament un servidor basat en SSL/TLS i és compatible bàsicament amb totes les característiques dels serveis TCP/HTTP. Té les següents característiques:

  • Ve amb un gestor de certificats X.509 que admet diversos certificats de noms de domini, comodins, certificats SAN i altres funcions.
  • Té la mateixa interfície i ús que el servidor TCP, i el codi de la capa superior no necessita preocupar-se per la diferència entre la connexió SSL i la connexió TCP.
  • Tots els protocols de seguretat SSL/TLS s'implementen mitjançant la biblioteca integrada d'OpenSSL.
  • Admet funcions d'extensió de protocol com SNI i ALPN.

Aquí teniu un exemple senzill:

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();

Al codi anterior, primer llegim el certificat SSL i els fitxers de clau privada i després vam crear una instància de servidor SSL. A la funció de devolució de trucada del servidor, després de rebre les dades del client, convertiu les dades a majúscules i torneu-les al client mitjançant la funció d'escriptura.

objecte

Socket

CrearSslSocketobjecte, veureSslSocket

1
SslSocket ssl.Socket;

Handler

CrearSslHandlerobjecte, veureSslHandler

1
SslHandler ssl.Handler;

Server

CrearSslServerobjecte, veureSslServer

1
SslServer ssl.Server;

funció estàtica

connect

CrearSslSocketobjectar i establir connexió

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

Paràmetres de trucada:

  • url: String, especifica el protocol de connexió, que pot ser: ssl://host:port
  • timeout: Sencer, especifica el temps d'espera, la unitat és de mil·lisegons, el valor predeterminat és 0

Resultats de retorn:


CrearSslSocketobjectar i establir connexió

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

Paràmetres de trucada:

  • url: String, especifica el protocol de connexió, que pot ser: ssl://host:port
  • crt:X509Cert, certificat, utilitzat per enviar al servidor per verificar el client
  • key:PKey, clau privada, utilitzada per parlar amb el client
  • timeout: Sencer, especifica el temps d'espera, la unitat és de mil·lisegons, el valor predeterminat és 0

Resultats de retorn:


CrearSslSocketobjectar i establir connexió

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

Paràmetres de trucada:

  • url: String, especifica el protocol de connexió, que pot ser: ssl://host:port
  • verification: Sencer, mode de verificació del certificat
  • crt:X509Cert, certificat, utilitzat per enviar al servidor per verificar el client
  • key:PKey, clau privada, utilitzada per parlar amb el client
  • timeout: Sencer, especifica el temps d'espera, la unitat és de mil·lisegons, el valor predeterminat és 0

Resultats de retorn:


setClientCert

Estableix el certificat de client predeterminat

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

Paràmetres de trucada:

  • crt:X509Cert, certificat, utilitzat per enviar al servidor per verificar el client
  • key:PKey, clau privada, utilitzada per parlar amb el client

loadRootCerts

Carregueu el certificat arrel predeterminat que ve amb ell, que és equivalent assl.ca.loadRootCerts

1
static ssl.loadRootCerts();

El contingut d'aquest certificat prové de: http://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt

propietats estàtiques

ca

X509Cert, certificat global, utilitzat per al certificat del servidor de verificació del mode client ssl

1
static readonly X509Cert ssl.ca;

verification

Enter, estableix el mode de verificació del certificat, el valor predeterminat és VERIFY_REQUIRED

1
static Integer ssl.verification;

constant

VERIFY_NONE

Mode de verificació del certificat, sense verificació

1
const ssl.VERIFY_NONE = 0;

VERIFY_OPTIONAL

Mode de verificació del certificat, verificació opcional, que permet que la verificació falli

1
const ssl.VERIFY_OPTIONAL = 1;

VERIFY_REQUIRED

Mode de verificació del certificat, que requereix verificació i s'interromprà si la verificació falla.

1
const ssl.VERIFY_REQUIRED = 2;

BADCERT_EXPIRED

Resultats de la verificació del certificat, temps d'espera del certificat

1
const ssl.BADCERT_EXPIRED = 1;

BADCERT_REVOKED

Resultat de la verificació del certificat, el certificat s'ha revocat

1
const ssl.BADCERT_REVOKED = 2;

BADCERT_CN_MISMATCH

Resultat de la verificació del certificat, nom del certificat incorrecte

1
const ssl.BADCERT_CN_MISMATCH = 4;

BADCERT_NOT_TRUSTED

Resultat de la verificació del certificat, el certificat no és fiable

1
const ssl.BADCERT_NOT_TRUSTED = 8;