Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@root/greenlock

Package Overview
Dependencies
Maintainers
3
Versions
35
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@root/greenlock

The easiest Let's Encrypt client for Node.js and Browsers

  • 3.0.3
  • npm
  • Socket score

Version published
Weekly downloads
18K
increased by36.95%
Maintainers
3
Weekly downloads
 
Created
Source

@root/greenlock

🔐 Free SSL, Free Wildcard SSL, and Fully Automated HTTPS for Node.js and Browsers, issued by Let's Encrypt v2 via ACME

Greenlock™ is the easiest way to integrate Let's Encrypt into your projects, products, and infrastructure.

  • Wildcard Certificates
  • IoT Environments
  • Enterprise and On-Prem
  • Private Networks
  • Localhost Development
  • Web Hosting Providers
  • Commercial support

We've built it simple enough for Hobbyists, and robust enough for the Enterprise.

JavaScript Library

Greenlock API (shared among JS implementations)

Instantiate

// Creates an instance of greenlock with certain default values

var gl = Greenlock.create({
	// Staging for testing environments
	staging: true,

	// This should be the contact who receives critical bug and security notifications
	// Optionally, you may receive other (very few) updates, such as important new features
	maintainerEmail: 'jon@example.com'
});
ParameterDescription
maintainerEmailthe developer contact for critical bug and security notifications
packageAgentif you publish your package for others to use, require('./package.json').name here

Add Approved Domains

greenlock.manager.defaults({
	// The "Let's Encrypt Subscriber" (often the same as the maintainer)
	// NOT the end customer (except where that is also the maintainer)
	subscriberEmail: 'jon@example.com',
	agreeToTerms: true
});
ParameterDescription
agreeToTerms(default: false) either 'true' or a function that presents the Terms of Service and returns it once accepted
challenges['http-01']provide an http-01 challenge module
challenges['dns-01']provide a dns-01 challenge module
challenges['tls-alpn-01']provide a tls-alpn-01 challenge module
challenges[type].modulethe name of your challenge module
challenges[type].xxxxmodule-specific options
servernamethe default servername to use for non-sni requests (many IoT clients)
subscriberEmailthe contact who agrees to the Let's Encrypt Subscriber Agreement and the Greenlock Terms of Service
this contact receives renewal failure notifications
storeoverride the default storage module
store.modulethe name of your storage module
store.xxxxoptions specific to your storage module
gl.add({
	subject: 'example.com',
	altnames: ['example.com', 'www.example.com', 'exampleapi.com']
});
ParameterDescription
subjectthe first domain on, and identifier of the certificate
altnamesfirst domain, plus additional domains
note: the order should always be the same
subscriberEmailif different from the default (i.e. multi-tenant, whitelabel)
agreeToTermsif subscriber is different from the default

Issue and Renew Certificates

This will renew only domains that have reached their renewAt or are within the befault renewOffset.

return greenlock.renew().then(function(results) {
	results.forEach(function(site) {
		if (site.error) {
			console.error(site.subject, site.error);
			return;
		}
	});
});
ParameterTypeDescription
(optional)ALL parameters are optional, but some should be paired
forceboolforce silly options, such as tiny durations
duplicateboolforce the domain to renew, regardless of age or expiration
issuedBeforemsCheck domains issued before the given date in milliseconds
expiresBeforemsCheck domains that expire before the given date in milliseconds
renewBeforemsCheck domains that are scheduled to renew before the given date in milliseconds

Note: only previous approved domains (via gl.add()) may be renewed

Note: this will NOT throw an error. It will return an array of certifates or errors.

More

TODO

Node.js
npm install --save @root/greenlock
npm install --save greenlock-manager-fs
npm install --save greenlock-store-fs
npm install --save acme-http-01-standalone

HTTP-01 & DNS-01 Integrations

For Public Web Servers running on a VPS, the default HTTP-01 challenge plugin will work just fine for most people.

However, for

  • Wildcard Certificates
  • IoT Environments
  • Enterprise On-Prem
  • Private Networks

Greenlock provides an easy way to integrate Let's Encrypt with your existing services through a variety of DNS-01 infrastructure

Why Typically file propagation is faster and more reliably than DNS propagation. Therefore, http-01 will be preferred to dns-01 except when wildcards or private domains are in use.

http-01 will only be supplied as a defaut if no other challenge is provided.

You can use ACME (Let's Encrypt) with

  • DNS-01 Challenges
    • CloudFlare
    • Digital Ocean
    • DNSimple
    • DuckDNS
    • GoDaddy
    • Gandi
    • NameCheap
    • Name.com
    • Route53 (AWS)
    • Vultr
    • Build your own
  • HTTP-01 Challenges
  • TLS-ALPN-01 Challenges
    • Contact us to learn about Greenlock Pro

Keywords

FAQs

Package last updated on 29 Oct 2019

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc