OpenSSL 에 대한 Dependecy 가 있습니다.
그리고 certs 폴더 아래에다가 만들도록 되어있으니 주의하세요.
Certificate Generator in node.js
function CERT_createKey(CN,keylen,callback){ exec('openssl genrsa -out certs/'+CN+'.key '+keylen, function(error, stdout, stderr) { if(error !== null) { console.log("Create Cert Key : " + error); callback({fail:true,error:error}); } else { callback({fail:false,error:"none"}); } }); } function CERT_csr(CN,callback){ exec('openssl req -new -key certs/'+CN+'.key -nodes -subj "/C=KR/O=noweek, Inc./OU=www.securekim.com/OU=(c) 2018 noweek, Inc./CN='+CN+'" -out certs/'+CN+'.csr', function(error, stdout, stderr) { if(error !== null) { console.log("Create CSR : " + error); callback({fail:true,error:error}); } else { callback({fail:false,error:"none"}); } }); } function CERT_sign(CSR,CA,days,callback){ //openssl x509 -req -days 500 -in demo.csr -CA CA-CA.crt -CAkey root.key -CAcreateserial -out my.crt var execstr = 'openssl x509 -req -days '+days+' -in certs/'+CSR+'.csr -signkey certs/'+CA+'.key -out certs/'+CSR+'.pem'; if(CSR !== CA) execstr = 'openssl x509 -req -days '+days+' -in certs/'+CSR+'.csr -CA certs/'+CA+'.pem -CAkey certs/'+CA+'.key -CAcreateserial -out certs/'+CSR+'.pem'; exec(execstr, function(error, stdout, stderr) { if(error !== null) { console.log("Sign CSR : " + error); callback({fail:true,error:error}); } else { callback({fail:false,error:"none"}); } }); } //CA 인증서를 만드는 함수 입니다. function CERT_createCA(CN,callback){ CERT_createKey(CN,4096,(result)=>{ if(result.fail) return callback(false); CERT_csr(CN,(result)=>{ if(result.fail) return callback(false); CERT_sign(CN,CN,36500,(result)=>{ if(result.fail) return callback(false); else return callback(true); }) }); }); } //인증서를 만들고, 위에서 만든 CA 인증서로 사이닝하는 함수 입니다. function CERT_createCERT(CA,CN,callback){ CERT_createKey(CN,2048,(result)=>{ if(result.fail) return callback(false); CERT_csr(CN,(result)=>{ if(result.fail) return callback(false); CERT_sign(CN,CA,14,(result)=>{ if(result.fail) return callback(false); else return callback(true); }); }); }); }
0 개의 댓글:
댓글 쓰기