Modulo modulo base

modulo ssl

Il modulo SSL è un modulo di crittografia integrato di fibjs, che può essere utilizzato per stabilire il protocollo di trasferimento ipertestuale SSL di una connessione di rete. Questo modulo fornisce la verifica crittografica in modo che client e server possano garantire che la connessione sia sicura

Il modulo SSL contiene più oggetti e costanti che possono essere utilizzati per un processo di comunicazione client/server SSL completo. Le categorie comunemente utilizzate sono:

  1. SslSocket: In base al sottostanteSocketL'oggetto socket SSL incapsulato può essere utilizzato per eseguire l'autenticazione bidirezionale e altre operazioni di comunicazione con il server remoto.
  2. SslHandler: processore di conversione del protocollo SSL, utilizzato per convertire i flussi di dati in protocolli di flusso SSL, adatti per creare servizi lato server.
  3. SslServer: oggetto server SSL, utile per creare server SSL multifibra standard.

Quello che segue èssl.ServerAd esempio, introduciamo l'uso del modulo SSL.

ssl.ServerÈ un server SSL di base che fornisce un servizio di rete basato su SSL. utilizzossl.ServerLa classe può creare rapidamente un server basato su SSL/TLS ed è compatibile praticamente con tutte le funzionalità dei servizi TCP/HTTP. Ha le seguenti caratteristiche:

  • Viene fornito con un gestore di certificati X.509 che supporta più certificati di nomi di dominio, caratteri jolly, certificati SAN e altre funzioni.
  • Ha la stessa interfaccia e utilizzo del server TCP e il codice di livello superiore non deve preoccuparsi della differenza tra connessione SSL e connessione TCP.
  • Tutti i protocolli di sicurezza SSL/TLS sono implementati utilizzando la libreria OpenSSL integrata.
  • Supporta funzioni di estensione del protocollo come SNI e ALPN.

Ecco un semplice esempio:

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

Nel codice precedente, leggiamo prima il certificato SSL e i file della chiave privata, quindi creiamo un'istanza del server SSL. Nella funzione di callback del server, dopo aver ricevuto i dati del client, convertire i dati in maiuscolo e restituirli al client tramite la funzione di scrittura.

oggetto

Socket

CreareSslSocketoggetto, vediSslSocket

1
SslSocket ssl.Socket;

Handler

CreareSslHandleroggetto, vediSslHandler

1
SslHandler ssl.Handler;

Server

CreareSslServeroggetto, vediSslServer

1
SslServer ssl.Server;

funzione statica

connect

CreareSslSocketoggetto e stabilire la connessione

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

Parametri di chiamata:

  • url: String, specifica il protocollo di connessione, che può essere: ssl://host:port
  • timeout: Numero intero, specifica il timeout, l'unità è millisecondi, il valore predefinito è 0

Risultati restituiti:


CreareSslSocketoggetto e stabilire la connessione

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

Parametri di chiamata:

  • url: String, specifica il protocollo di connessione, che può essere: ssl://host:port
  • crt:X509Cert, certificato, utilizzato per inviare al server per verificare il client
  • key:PKey, chiave privata, utilizzata per parlare con il client
  • timeout: Numero intero, specifica il timeout, l'unità è millisecondi, il valore predefinito è 0

Risultati restituiti:


CreareSslSocketoggetto e stabilire la connessione

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

Parametri di chiamata:

  • url: String, specifica il protocollo di connessione, che può essere: ssl://host:port
  • verification: Numero intero, modalità di verifica del certificato
  • crt:X509Cert, certificato, utilizzato per inviare al server per verificare il client
  • key:PKey, chiave privata, utilizzata per parlare con il client
  • timeout: Numero intero, specifica il timeout, l'unità è millisecondi, il valore predefinito è 0

Risultati restituiti:


setClientCert

Imposta il certificato client predefinito

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

Parametri di chiamata:

  • crt:X509Cert, certificato, utilizzato per inviare al server per verificare il client
  • key:PKey, chiave privata, utilizzata per parlare con il client

loadRootCerts

Carica il certificato root predefinito fornito con esso, che è equivalente assl.ca.loadRootCerts

1
static ssl.loadRootCerts();

Il contenuto di questo certificato proviene da: http://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt

proprietà statiche

ca

X509Cert, certificato globale, utilizzato per il certificato del server di verifica in modalità client SSL

1
static readonly X509Cert ssl.ca;

verification

Numero intero, imposta la modalità di verifica del certificato, il valore predefinito è VERIFY_REQUIRED

1
static Integer ssl.verification;

costante

VERIFY_NONE

Modalità di verifica del certificato, nessuna verifica

1
const ssl.VERIFY_NONE = 0;

VERIFY_OPTIONAL

Modalità di verifica del certificato, verifica facoltativa, che consente alla verifica di fallire

1
const ssl.VERIFY_OPTIONAL = 1;

VERIFY_REQUIRED

Modalità di verifica del certificato, che richiede la verifica e verrà interrotta se la verifica fallisce.

1
const ssl.VERIFY_REQUIRED = 2;

BADCERT_EXPIRED

Risultati della verifica del certificato, timeout del certificato

1
const ssl.BADCERT_EXPIRED = 1;

BADCERT_REVOKED

Risultato della verifica del certificato, il certificato è stato revocato

1
const ssl.BADCERT_REVOKED = 2;

BADCERT_CN_MISMATCH

Risultato della verifica del certificato, nome del certificato errato

1
const ssl.BADCERT_CN_MISMATCH = 4;

BADCERT_NOT_TRUSTED

Risultato della verifica del certificato, il certificato non è affidabile

1
const ssl.BADCERT_NOT_TRUSTED = 8;