Node.js - TLS/SSL模块

Node.js - TLS/SSL模块 首页 / Node.js入门教程 / Node.js - TLS/SSL模块

什么是TLS/SSL

TLS代表传输层安全性。它是安全套接字层(SSL)的后继者。 TLS和SSL一起用于加密协议,以确保Web上的通信安全。

TLS使用公共密钥密码术来加密消息。它通常在TCP层上加密通信。

无涯教程网

什么是公钥密码

在公用密钥加密中,每个客户端和每个服务器都有两个密钥:公钥和私钥。公钥与所有人共享,私钥是安全的。要加密邮件,计算机需要使用其私钥和收件人的公钥。另一方面,要解密消息,收件人需要自己的私钥。

您必须使用require('tls')来访问此模块。

语法:

var tls = require('tls');  

TLS模块使用OpenSSL来获得传输层安全性和安全套接字层。 TLS/SSL是公/私钥基础结构。每个客户端和每个服务器必须具有私钥。

可以这样创建一个私钥:

openssl genrsa -out ryans-key.pem 1024 

所有服务器和某些客户都需要具有证书。证书是由证书颁发机构签名或自签名的公钥。要获得证书,您必须创建一个“证书签名请求”(CSR)文件。

可以像这样创建证书:

openssl req -new -key ryans-key.pem -out ryans-csr.pem 

要使用CSR创建自语法证书:

openssl x509 -req -in ryans-csr.pem -signkey ryans-key.pem -out ryans-cert.pem 

TLS客户端示例

文件:tls_client.js.

tls = require('tls');
function connected(stream) {
    if (stream) {
      //已连接的Socket
      stream.write("GET/HTTP/1.0\n\rHost: encrypted.google.com:443\n\r\n\r");  
    } else {
      console.log("Connection failed");
    }
}
//需要将套接字变量保持在范围内
var dummy = this;
//尝试连接到服务器
dummy.socket = tls.connect(443, 'encrypted.google.com', function() {
  //仅在套接字连接成功后调用的回调
   dummy.connected = true;
   if (dummy.socket.authorized) {
     //授权成功
      dummy.socket.setEncoding('utf-8');
      connected(dummy.socket);
   } else {
     //授权失败
     console.log(dummy.socket.authorizationError);
     connected(null);
   }
});
 dummy.socket.addListener('data', function(data) {
  //接收数据
   console.log(data);
});
 dummy.socket.addListener('error', function(error) {
   if (!dummy.connected) {
    //套接字未连接,通知回调
     connected(null);
   }
   console.log("FAIL");
   console.log(error);
});
 dummy.socket.addListener('close', function() {

});

输出:

Node.js tls ssl example 1

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

微服务架构核心20讲 -〔杨波〕

推荐系统三十六式 -〔刑无刀〕

Vue开发实战 -〔唐金州〕

从0开始做增长 -〔刘津〕

分布式技术原理与算法解析 -〔聂鹏程〕

OAuth 2.0实战课 -〔王新栋〕

程序员的个人财富课 -〔王喆〕

结构会议力 -〔李忠秋〕

AI大模型系统实战 -〔Tyler〕

好记忆不如烂笔头。留下您的足迹吧 :)