amiddy
Version:
Middleware server with high configurability for development
1 lines • 1.23 kB
JavaScript
import fs from"fs";import selfsigned from"selfsigned";const privateApi={getAltName:vhostName=>{const parts=vhostName.split("."),partsLen=parts.length;if(2>=partsLen)return vhostName;const[,...relevantParts]=parts;return`*.${relevantParts.join(".")}`}},service={};service.read=config=>{const sslObj={cert:fs.readFileSync(config.cert),key:fs.readFileSync(config.key)};return sslObj},service.generate=(vhostName,selfsignedConf)=>{const conf=selfsignedConf||{},name=privateApi.getAltName(vhostName),selfsignedAttrs=conf.attrs||[{name:"commonName",value:name},{name:"organizationName",value:"amiddy Trust"}],selfsignedOpts=conf.opts||{algorithm:"sha256",clientCertificate:!0,clientCertificateCN:"amiddy",days:365,extensions:[{cA:!1,critical:!0,name:"basicConstraints"},{critical:!0,dataEncipherment:!0,digitalSignature:!0,keyCertSign:!0,keyEncipherment:!0,name:"keyUsage",nonRepudiation:!0},{clientAuth:!0,name:"extKeyUsage",serverAuth:!0},{altNames:[{type:2,value:name}],name:"subjectAltName"},{name:"subjectKeyIdentifier"},{authorityCertIssuer:!0,keyIdentifier:!0,name:"authorityKeyIdentifier",serialNumber:!0}],keySize:2048};return selfsigned.generate(selfsignedAttrs,selfsignedOpts)};export{privateApi};export default service;