当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js tls.createServer([options][, secureConnectionListener])用法及代码示例


tls.createServer([options][, secureConnectionListener])

历史
版本变化
v12.3.0

options 参数现在支持 net.createServer() 选项。

v9.3.0

options 参数现在可以包括 clientCertEngine

v8.0.0

ALPNProtocols 选项现在可以是 TypedArrayDataView

v5.0.0

现在支持 ALPN 选项。

v0.3.2

添加于:v0.3.2


参数
  • options <Object>
    • ALPNProtocols : <string[]> | <Buffer[]> | <TypedArray[]> | <DataView[]> | <Buffer> | <TypedArray> | <DataView> 包含支持的 ALPN 协议的字符串数组,BufferTypedArrayDataView 或单个 BufferTypedArrayDataViewBuffer s 应该具有格式 [len][name][len][name]... 例如0x05hello0x05world ,其中第一个字节是下一个协议名称的长度。传递数组通常要简单得多,例如['hello', 'world'] 。 (协议应按其优先级排序。)

    • clientCertEngine <string> 可以提供客户端证书的OpenSSL 引擎的名称。

    • enableTrace <boolean> 如果 true ,将在新连接上调用 tls.TLSSocket.enableTrace() 。建立安全连接后可以启用跟踪,但必须使用此选项来跟踪安全连接设置。 默认: false

    • handshakeTimeout <number> 如果 SSL/TLS 握手未在指定的毫秒数内完成,则中止连接。每当握手超时时,都会在 tls.Server 对象上发出 'tlsClientError'默认: 120000(120 秒)。

    • rejectUnauthorized <boolean> 如果不是 false,服务器将拒绝任何未经提供的 CA 列表授权的连接。此选项仅在 requestCerttrue 时有效。 默认: true

    • requestCert <boolean> 如果 true 服务器将从连接的客户端请求证书并尝试验证该证书。 默认: false

    • sessionTimeout <number> 服务器创建的 TLS 会话将不再可恢复的秒数。有关详细信息,请参阅Session Resumption默认: 300

    • SNICallback(servername, callback) <Function> 如果客户端支持 SNI TLS 扩展,将调用该函数。调用时将传递两个参数:servernamecallbackcallback 是一个 error-first 回调,它接受两个可选参数:errorctxctx (如果提供)是 SecureContext 实例。 tls.createSecureContext() 可用于获得正确的 SecureContext 。如果使用虚假的 ctx 参数调用 callback,则将使用服务器的默认安全上下文。如果未提供SNICallback,则将使用具有高级 API 的默认回调(见下文)。

    • ticketKeys : <Buffer> 48 字节的加密强伪随机数据。有关详细信息,请参阅Session Resumption

    • pskCallback <Function>

      在协商TLS-PSK(预共享 key )时,使用客户端提供的身份调用该函数。如果返回值为null,则协商过程将停止,并向对方发送"unknown_psk_identity"警报消息。如果服务器希望隐藏 PSK 身份未知的事实,则回调必须提供一些随机数据作为 psk 以使连接在协商完成之前以 "decrypt_error" 失败。默认情况下禁用 PSK 密码,因此使用 TLS-PSK 需要使用 ciphers 选项显式指定密码套件。更多信息可以在RFC 4279 中找到。

    • pskIdentityHint <string> 可选提示发送给客户端以帮助在 TLS-PSK 协商期间选择身份。在 TLS 1.3 中将被忽略。在未能设置 pskIdentityHint 时,'tlsClientError' 将与 'ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED' 代码一起发出。

    • ...:可以提供任何 tls.createSecureContext() 选项。对于服务器,通常需要标识选项(pfxkey /certpskCallback)。

    • ...:可以提供任何 net.createServer() 选项。

  • secureConnectionListener <Function>
  • 返回: <tls.Server>

创建一个新的 tls.Server secureConnectionListener(如果提供)会自动设置为 'secureConnection' 事件的侦听器。

ticketKeys 选项在node:cluster 模块工作人员之间自动共享。

下面演示了一个简单的回显服务器:

const tls = require('node:tls');
const fs = require('node:fs');

const options = {
  key: fs.readFileSync('server-key.pem'),
  cert: fs.readFileSync('server-cert.pem'),

  // This is necessary only if using client certificate authentication.
  requestCert: true,

  // This is necessary only if the client uses a self-signed certificate.
  ca: [ fs.readFileSync('client-cert.pem') ]
};

const server = tls.createServer(options, (socket) => {
  console.log('server connected',
              socket.authorized ? 'authorized' : 'unauthorized');
  socket.write('welcome!\n');
  socket.setEncoding('utf8');
  socket.pipe(socket);
});
server.listen(8000, () => {
  console.log('server bound');
});

可以通过使用来自 tls.connect() 的示例客户端连接到服务器来测试服务器。

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 tls.createServer([options][, secureConnectionListener])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。