什么是TLS/SSL?

TLS代表传输层安全性(Transport Layer Security),是安全套接字层(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

Node.js TLS客户端示例

文件:tls_client.js

tls = require('tls');

function connected(stream) {
  if (stream) {
    // socket connected
    stream.write("GET / HTTP/1.0\n\rHost: encrypted.google.com:443\n\r\n\r");
  } else {
    console.log("Connection failed");
  }
}

// needed to keep socket variable in scope
var dummy = this;

// try to connect to the server
dummy.socket = tls.connect(443, 'encrypted.google.com', function() {
  // callback called only after successful socket connection
  dummy.connected = true;
  if (dummy.socket.authorized) {
    // authorization successful
    dummy.socket.setEncoding('utf-8');
    connected(dummy.socket);
  } else {
    // authorization failed
    console.log(dummy.socket.authorizationError);
    connected(null);
  }
});

dummy.socket.addListener('data', function(data) {
  // received data
  console.log(data);
});

dummy.socket.addListener('error', function(error) {
  if (!dummy.connected) {
    // socket was not connected, notify callback
    connected(null);
  }
  console.log("FAIL");
  console.log(error);
});

dummy.socket.addListener('close', function() {
  // do something
});

输出:

1.jpg

标签: Nodejs, Nodejs安装教程, Nodejs教程, node, nodejs入门, nodejs入门教程, nodejs进阶, nodejs学习教程, nodejs开发, nodejs指南, nodejs学习指南, nodejs环境配置, nodejs框架