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])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。