This is a simple library to generate a self-signed x509 key-pair and certificate.
Import library from the ESM.SH CDN for fast and easy setup:
import {create} from "//esm.sh/gh/rahatool/self-cert";
Use the package manager npm to install self-cert.
$ npm install github:rahatool/self-cert
- Create a new project with the entry point "index.mjs".
- Add the project dependency by
npm i github:rahatool/self-cert
. - Put the following script in file "index.mjs".
import {create as createCertificate} from '@raha.group/self-cert';
import fs from 'fs/promises';
import os from 'os';
let hosts = [];
for (let networkInterface of Object.values(os.networkInterfaces())) {
for (let assignedNetworkAddress of networkInterface) {
hosts.push(assignedNetworkAddress.address);
}
}
let certificate = createCertificate({
domains: [ // List the hostnames (including wildcards) on your origin that the certificate should protect.
'localhost',
'*.local', // wildcards
...hosts
],
expires: new Date(2025, 1),
/*
attributes: {
commonName: domains[0],
countryName: 'IR',
stateName: 'Isfahan',
locality: 'Isfahan',
organizationName: 'None',
},
keySize: 2048,
*/
});
await fs.writeFile('privateKey.pem', certificate.privateKey);
await fs.writeFile('publicKey.pem', certificate.publicKey);
await fs.writeFile('certificate.pem', certificate.certificate);
Here is an example of generating an SSL key/cert on the fly and running an HTTPS server on port 443. Use https://localhost:443 to access the created server.
import {create as createCertificate} from '@raha.group/self-cert';
import https from 'https';
let certificate = createCertificate({
domains: ['localhost'],
});
https.createServer({key: certificate.privateKey, cert: certificate.certificate}, function(request, response) {
response.end('Hello World ~_^');
}).listen(443);