You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					70 lines
				
				1.3 KiB
			
		
		
			
		
	
	
					70 lines
				
				1.3 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const selfsigned = require('selfsigned');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function createCertificate(attributes) {
							 | 
						||
| 
								 | 
							
								  return selfsigned.generate(attributes, {
							 | 
						||
| 
								 | 
							
								    algorithm: 'sha256',
							 | 
						||
| 
								 | 
							
								    days: 30,
							 | 
						||
| 
								 | 
							
								    keySize: 2048,
							 | 
						||
| 
								 | 
							
								    extensions: [
							 | 
						||
| 
								 | 
							
								      // {
							 | 
						||
| 
								 | 
							
								      //   name: 'basicConstraints',
							 | 
						||
| 
								 | 
							
								      //   cA: true,
							 | 
						||
| 
								 | 
							
								      // },
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        name: 'keyUsage',
							 | 
						||
| 
								 | 
							
								        keyCertSign: true,
							 | 
						||
| 
								 | 
							
								        digitalSignature: true,
							 | 
						||
| 
								 | 
							
								        nonRepudiation: true,
							 | 
						||
| 
								 | 
							
								        keyEncipherment: true,
							 | 
						||
| 
								 | 
							
								        dataEncipherment: true,
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        name: 'extKeyUsage',
							 | 
						||
| 
								 | 
							
								        serverAuth: true,
							 | 
						||
| 
								 | 
							
								        clientAuth: true,
							 | 
						||
| 
								 | 
							
								        codeSigning: true,
							 | 
						||
| 
								 | 
							
								        timeStamping: true,
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        name: 'subjectAltName',
							 | 
						||
| 
								 | 
							
								        altNames: [
							 | 
						||
| 
								 | 
							
								          {
							 | 
						||
| 
								 | 
							
								            // type 2 is DNS
							 | 
						||
| 
								 | 
							
								            type: 2,
							 | 
						||
| 
								 | 
							
								            value: 'localhost',
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          {
							 | 
						||
| 
								 | 
							
								            type: 2,
							 | 
						||
| 
								 | 
							
								            value: 'localhost.localdomain',
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          {
							 | 
						||
| 
								 | 
							
								            type: 2,
							 | 
						||
| 
								 | 
							
								            value: 'lvh.me',
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          {
							 | 
						||
| 
								 | 
							
								            type: 2,
							 | 
						||
| 
								 | 
							
								            value: '*.lvh.me',
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          {
							 | 
						||
| 
								 | 
							
								            type: 2,
							 | 
						||
| 
								 | 
							
								            value: '[::1]',
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          {
							 | 
						||
| 
								 | 
							
								            // type 7 is IP
							 | 
						||
| 
								 | 
							
								            type: 7,
							 | 
						||
| 
								 | 
							
								            ip: '127.0.0.1',
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          {
							 | 
						||
| 
								 | 
							
								            type: 7,
							 | 
						||
| 
								 | 
							
								            ip: 'fe80::1',
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								        ],
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								    ],
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = createCertificate;
							 |