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 개의 댓글:
댓글 쓰기