diff --git a/lib/certGenerator.js b/lib/certGenerator.js index 189cb65..d23bab2 100644 --- a/lib/certGenerator.js +++ b/lib/certGenerator.js @@ -7,11 +7,11 @@ var defaultAttrs = [ { shortName: 'OU', value: 'AnyProxy SSL Proxy'} ]; -function getKeysAndCert(){ +function getKeysAndCert(serialNumber){ var keys = forge.pki.rsa.generateKeyPair(1024); var cert = forge.pki.createCertificate(); cert.publicKey = keys.publicKey; - cert.serialNumber = '01'; + cert.serialNumber = serialNumber || (Math.floor(Math.random() * 100000) + ''); cert.validity.notBefore = new Date(); cert.validity.notBefore.setFullYear(cert.validity.notBefore.getFullYear() - 10); // 10 years cert.validity.notAfter = new Date(); @@ -56,15 +56,20 @@ function generateRootCA(){ } function generateCertsForHostname(domain, rootCAConfig){ - var keysAndCert = getKeysAndCert(); + + //generate a serialNumber for domain + var md = forge.md.md5.create(); + md.update(domain); + + var keysAndCert = getKeysAndCert(md.digest().toHex()); keys = keysAndCert.keys; cert = keysAndCert.cert; - var caCert = forge.pki.certificateFromPem(rootCAConfig.cert) - var caKey = forge.pki.privateKeyFromPem(rootCAConfig.key) + var caCert = forge.pki.certificateFromPem(rootCAConfig.cert); + var caKey = forge.pki.privateKeyFromPem(rootCAConfig.key); // issuer from CA - cert.setIssuer(caCert.subject.attributes) + cert.setIssuer(caCert.subject.attributes); var attrs = defaultAttrs.concat([ { diff --git a/package.json b/package.json index bb77951..37d6361 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "anyproxy", - "version": "3.10.2", + "version": "3.10.3Beta1", "description": "A fully configurable proxy in NodeJS, which can handle HTTPS requests perfectly.", "main": "proxy.js", "bin": {