tls.createServer([options][, secureConnectionListener])
版本 | 变化 |
---|---|
v12.3.0 |
|
v9.3.0 |
|
v8.0.0 |
|
v5.0.0 | 现在支持 ALPN 选项。 |
v0.3.2 | 添加于:v0.3.2 |
参数
options
<Object>-
ALPNProtocols
: <string[]> | <Buffer[]> | <TypedArray[]> | <DataView[]> | <Buffer> | <TypedArray> | <DataView> 包含支持的 ALPN 协议的字符串数组,Buffer
或TypedArray
或DataView
或单个Buffer
或TypedArray
或DataView
。Buffer
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 列表授权的连接。此选项仅在requestCert
为true
时有效。 默认:true
。 -
requestCert
<boolean> 如果true
服务器将从连接的客户端请求证书并尝试验证该证书。 默认:false
。 -
sessionTimeout
<number> 服务器创建的 TLS 会话将不再可恢复的秒数。有关详细信息,请参阅Session Resumption。 默认:300
。 -
SNICallback(servername, callback)
<Function> 如果客户端支持 SNI TLS 扩展,将调用该函数。调用时将传递两个参数:servername
和callback
。callback
是一个 error-first 回调,它接受两个可选参数:error
和ctx
。ctx
(如果提供)是SecureContext
实例。tls.createSecureContext()
SecureContext
。如果使用虚假的ctx
参数调用callback
,则将使用服务器的默认安全上下文。如果未提供SNICallback
,则将使用具有高级 API 的默认回调(见下文)。 -
ticketKeys
: <Buffer> 48 字节的加密强伪随机数据。有关详细信息,请参阅Session Resumption。 -
pskCallback
<Function>- 套接字: <tls.TLSSocket> 此连接的服务器
tls.TLSSocket
- 身份: <string> 客户端发送的身份参数。
- 返回: <Buffer> | <TypedArray> | <DataView> 预共享 key 必须是缓冲区或
null
以停止协商过程。返回的 PSK 必须与所选密码的摘要兼容。
在协商TLS-PSK(预共享 key )时,使用客户端提供的身份调用该函数。如果返回值为
null
,则协商过程将停止,并向对方发送"unknown_psk_identity"警报消息。如果服务器希望隐藏 PSK 身份未知的事实,则回调必须提供一些随机数据作为psk
以使连接在协商完成之前以 "decrypt_error" 失败。默认情况下禁用 PSK 密码,因此使用 TLS-PSK 需要使用ciphers
选项显式指定密码套件。更多信息可以在RFC 4279 中找到。 - 套接字: <tls.TLSSocket> 此连接的服务器
-
pskIdentityHint
<string> 可选提示发送给客户端以帮助在 TLS-PSK 协商期间选择身份。在 TLS 1.3 中将被忽略。在未能设置 pskIdentityHint 时,'tlsClientError'
将与'ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED'
代码一起发出。 -
...:可以提供任何
tls.createSecureContext()
pfx
、key
/cert
或pskCallback
)。 -
...:可以提供任何
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()
相关用法
- Node.js tls.createServer()用法及代码示例
- Node.js tls.createSecurePair([context][, isServer][, requestCert][, rejectUnauthorized][, options])用法及代码示例
- Node.js tls.connect(options[, callback])用法及代码示例
- Node.js tls.connect()用法及代码示例
- Node.js tls.DEFAULT_MAX_VERSION用法及代码示例
- Node.js tls.DEFAULT_ECDH_CURVE用法及代码示例
- Node.js tls.TLSSocket.getPeerCertificate([detailed])用法及代码示例
- Node.js tls.getCiphers()用法及代码示例
- Node.js tls.DEFAULT_MIN_VERSION用法及代码示例
- Node.js tls.TLSSocket.exportKeyingMaterial(length, label[, context])用法及代码示例
- Node.js tls.rootCertificates()用法及代码示例
- Node.js tlsSocket.authorized用法及代码示例
- Node.js tlsSocket.disableRenegotiation()用法及代码示例
- Node.js tlsSocket.address()用法及代码示例
- Node.js tlsSocket.remoteAddress用法及代码示例
- Node.js tlsSocket.setMaxSendFragment()用法及代码示例
- Node.js tlsSocket.getProtocol()用法及代码示例
- Node.js tlsSocket.exportKeyingMaterial()用法及代码示例
- Node.js tlsSocket.getPeerFinished()用法及代码示例
- Node.js tlsSocket.getFinished()用法及代码示例
- Node.js tlsSocket.authorizationError用法及代码示例
- Node.js tlsSocket.getPeerCertificate()用法及代码示例
- Node.js tlsSocket.localAddress用法及代码示例
- Node.js tlsSocket.getSession()用法及代码示例
- Node.js tlsSocket.remoteFamily用法及代码示例
注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 tls.createServer([options][, secureConnectionListener])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。