tls.connect(options[, callback])
| 版本 | 變化 | 
|---|---|
| v15.1.0、v14.18.0 | 添加了  | 
| v14.1.0、v13.14.0 | 現在接受   | 
| v13.6.0、v12.16.0 | 現在支持   | 
| v12.9.0 | 支持  | 
| v12.4.0 | 現在支持   | 
| v12.2.0 | 現在支持   | 
| v11.8.0、v10.16.0 | 現在支持  | 
| v8.0.0 | 現在支持  | 
| v8.0.0 | 
  | 
| v5.0.0 | 現在支持 ALPN 選項。  | 
| v5.3.0、v4.7.0 | 現在支持  | 
| v0.11.3 | 添加於:v0.11.3  | 
參數
options<Object>- 
enableTrace:見tls.createServer() - 
host<string> 客戶端應連接的主機。 默認:'localhost'。 - 
port<number> 客戶端應連接的端口。 - 
path<string> 創建到路徑的 Unix 套接字連接。如果指定了此選項,則忽略host和port。 - 
socket<stream.Duplex> 在給定套接字上建立安全連接,而不是創建新套接字。通常,這是的一個實例,但允許任何net.SocketDuplex流。如果指定此選項,則path、host和port將被忽略,證書驗證除外。通常,套接字在傳遞給tls.connect()時已經連接,但可以稍後連接。socket的連接/斷開/破壞是用戶的責任;調用tls.connect()不會導致調用net.connect()。 - 
allowHalfOpen<boolean> 如果設置為false,那麽當可讀端結束時,套接字將自動結束可寫端。如果設置了socket選項,則此選項無效。有關詳細信息,請參閱的net.SocketallowHalfOpen選項。 默認:false。 - 
rejectUnauthorized<boolean> 如果不是false,則根據提供的 CA 列表驗證服務器證書。如果驗證失敗,則會發出'error'事件;err.code包含 OpenSSL 錯誤代碼。 默認:true。 - 
pskCallback<Function>- 提示: <string>  從服務器發送的可選消息,以幫助客戶端決定在協商期間使用哪個身份。如果使用 TLS 1.3,則始終 
null。 - 返回: <Object>  以 
{ psk: <Buffer|TypedArray|DataView>, identity: <string> }或null的形式停止協商過程。psk必須與所選密碼的摘要兼容。identity必須使用 UTF-8 編碼。 
在協商TLS-PSK(預共享 key )時,使用服務器提供的可選標識
hint或null(在刪除hint的 TLS 1.3 的情況下)調用此函數。有必要為連接提供自定義tls.checkServerIdentity(),因為默認連接會嘗試根據證書檢查服務器的主機名/IP,但這不適用於 PSK,因為不會存在證書。更多信息可以在RFC 4279 中找到。 - 提示: <string>  從服務器發送的可選消息,以幫助客戶端決定在協商期間使用哪個身份。如果使用 TLS 1.3,則始終 
 - 
ALPNProtocols: <string[]> | <Buffer[]> | <TypedArray[]> | <DataView[]> | <Buffer> | <TypedArray> | <DataView> 包含支持的 ALPN 協議的字符串數組,Buffer或TypedArray或DataView或單個Buffer或TypedArray或DataView。Buffers 應該具有格式[len][name][len][name]...例如'\x08http/1.1\x08http/1.0',其中len字節是下一個協議名稱的長度。傳遞數組通常要簡單得多,例如['http/1.1', 'http/1.0']。列表中較早的協議比後麵的協議具有更高的偏好。 - 
servername: <string> SNI(服務器名稱指示)TLS 擴展的服務器名稱。它是要連接的主機的名稱,並且必須是主機名,而不是 IP 地址。 multi-homed 服務器可以使用它來選擇要呈現給客戶端的正確證書,請參閱的tls.createServer()SNICallback選項。 - 
checkServerIdentity(servername, cert)<Function> 根據證書檢查服務器的主機名(或顯式設置時提供的servername)時要使用的回調函數(而不是內置的tls.checkServerIdentity()函數)。如果驗證失敗,這應該返回 <Error> 。如果驗證了servername和cert,則該方法應返回undefined。 - 
session<Buffer>Buffer實例,包含 TLS 會話。 - 
minDHSize<number> DH 參數的最小大小(以位為單位)以接受 TLS 連接。當服務器提供大小小於minDHSize的 DH 參數時,TLS 連接將被破壞並引發錯誤。 默認:1024。 - 
highWaterMark: <number> 與可讀流highWaterMark參數一致。 默認:16 * 1024。 - 
secureContext:使用創建的 TLS 上下文對象。如果未提供tls.createSecureContext()secureContext,則將通過將整個options對象傳遞給tls.createSecureContext()來創建一個。 - 
onread<Object> 如果缺少socket選項,則傳入數據將存儲在單個buffer中,並在數據到達套接字時傳遞給提供的callback,否則將忽略該選項。有關詳細信息,請參閱的net.Socketonread選項。 - 
...:如果缺少
secureContext選項,則使用選項,否則將被忽略。tls.createSecureContext() - 
...:任何尚未列出的
選項。socket.connect() 
- 
 callback<Function>- 返回: <tls.TLSSocket>
 
callback 函數(如果指定)將添加為   事件的偵聽器。'secureConnect' 
tls.connect() 返回一個   對象。tls.TLSSocket 
與https API 不同,tls.connect() 默認不啟用 SNI(服務器名稱指示)擴展,這可能會導致某些服務器返回錯誤的證書或完全拒絕連接。要啟用 SNI,除了 host 之外,還要設置 servername 選項。
下麵說明了來自   的回顯服務器示例的客戶端:tls.createServer() 
// Assumes an echo server that is listening on port 8000.
const tls = require('node:tls');
const fs = require('node:fs');
const options = {
  // Necessary only if the server requires client certificate authentication.
  key: fs.readFileSync('client-key.pem'),
  cert: fs.readFileSync('client-cert.pem'),
  // Necessary only if the server uses a self-signed certificate.
  ca: [ fs.readFileSync('server-cert.pem') ],
  // Necessary only if the server's cert isn't for "localhost".
  checkServerIdentity: () => { return null; },
};
const socket = tls.connect(8000, options, () => {
  console.log('client connected',
              socket.authorized ? 'authorized' : 'unauthorized');
  process.stdin.pipe(socket);
  process.stdin.resume();
});
socket.setEncoding('utf8');
socket.on('data', (data) => {
  console.log(data);
});
socket.on('end', () => {
  console.log('server ends connection');
});
相關用法
- Node.js tls.connect()用法及代碼示例
 - Node.js tls.createServer([options][, secureConnectionListener])用法及代碼示例
 - Node.js tls.createServer()用法及代碼示例
 - Node.js tls.createSecurePair([context][, isServer][, requestCert][, rejectUnauthorized][, options])用法及代碼示例
 - 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.connect(options[, callback])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
