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:
- 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.
- 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.
- 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
19const 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
1SslSocket ssl.Socket;
Handler
CrearSslHandlerobjecte, veureSslHandler
1SslHandler ssl.Handler;
Server
CrearSslServerobjecte, veureSslServer
1SslServer ssl.Server;
funció estàtica
connect
CrearSslSocketobjectar i establir connexió
1
2static 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
4static 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
5static 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
2static 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
1static 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
1static readonly X509Cert ssl.ca;
verification
Enter, estableix el mode de verificació del certificat, el valor predeterminat és VERIFY_REQUIRED
1static Integer ssl.verification;
constant
VERIFY_NONE
Mode de verificació del certificat, sense verificació
1const ssl.VERIFY_NONE = 0;
VERIFY_OPTIONAL
Mode de verificació del certificat, verificació opcional, que permet que la verificació falli
1const ssl.VERIFY_OPTIONAL = 1;
VERIFY_REQUIRED
Mode de verificació del certificat, que requereix verificació i s'interromprà si la verificació falla.
1const ssl.VERIFY_REQUIRED = 2;
BADCERT_EXPIRED
Resultats de la verificació del certificat, temps d'espera del certificat
1const ssl.BADCERT_EXPIRED = 1;
BADCERT_REVOKED
Resultat de la verificació del certificat, el certificat s'ha revocat
1const ssl.BADCERT_REVOKED = 2;
BADCERT_CN_MISMATCH
Resultat de la verificació del certificat, nom del certificat incorrecte
1const ssl.BADCERT_CN_MISMATCH = 4;
BADCERT_NOT_TRUSTED
Resultat de la verificació del certificat, el certificat no és fiable
1const ssl.BADCERT_NOT_TRUSTED = 8;