
Security News
Deno 2.6 + Socket: Supply Chain Defense In Your CLI
Deno 2.6 introduces deno audit with a new --socket flag that plugs directly into Socket to bring supply chain security checks into the Deno CLI.
Upgrade a regular net.Stream connection to a secure tls connection.
Based on code by Andris Reinman, itself based on an older version by Nathan Rajlich.
This library has one method and accepts either an options hash or a prepared socket as the first argument. It returns a SecurePair.
The following options are supported:
socket - if not provided, a socket will be created using net.createConnectionhost - used to perform automatic certificate identity checking, to guard against MITM attacksport - only used to create a socket (along with the host option) if socket is not providedpair - if you want to provide your own SecurePair objectThe onSecure callback is optional and receives null or an error object as the first argument (see below for error cases). Within the callback context, this refers to the same SecurePair object returned by starttls.
var net = require('net');
var starttls = require('starttls');
var options = {
port: 21,
host: example.com
};
net.createConnection(options, function() {
options.socket = this;
starttls(options, function(err) {
if (err) {
// Something bad happened!
return;
}
this.cleartext.write('garbage');
});
});
You should always check for an error before writing to the stream to avoid man-in-the-middle attacks. Errors are produced in the following cases:
If you only pass a socket object, server identity checking will not be performed automatically. In that case you should perform the check manually.
starttls(socket, function(err) {
if (!tls.checkServerIdentity(host, this.cleartext.getPeerCertificate())) {
// Hostname mismatch!
// Report error and end connection...
}
});
See socks5-https-client for use-case.
Run make test or npm test to run tests.
Portions of this code copyright (c) 2012, Andris Reinman and copyright (c) 2011, Nathan Rajlich.
Modified and redistributed under an MIT license.
FAQs
Upgrade a regular `net.Stream` connection to a secure `tls` connection.
We found that starttls demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Deno 2.6 introduces deno audit with a new --socket flag that plugs directly into Socket to bring supply chain security checks into the Deno CLI.

Security News
New DoS and source code exposure bugs in React Server Components and Next.js: what’s affected and how to update safely.

Security News
Socket CEO Feross Aboukhadijeh joins Software Engineering Daily to discuss modern software supply chain attacks and rising AI-driven security risks.