Я переписал скрипт приведённый по ссылке в предыдущем посте на JScript (для запуска под M$ Windows). Выложу для тут, чтобы другие не мучались
| Код | function Run() { // // argument line handling // var stdout = WScript.StdOut; var args = WScript.Arguments; if(args.length != 1) { stdout.WriteLine("Usage: cscript " + WScript.ScriptName + " file.csr"); return(1); } var csr_filename = new String(args(0)); var crt_filename = new String; if(csr_filename.search(".csr$") == -1) crt_filename = new String(csr_filename + ".crt"); else { var re = /csr$/; crt_filename = csr_filename.replace(re, "crt"); }
// // make sure environment exists // var fso = WScript.CreateObject("Scripting.FileSystemObject"); if(!fso.FolderExists("ca.db.certs")) fso.CreateFolder("ca.db.certs"); if(!fso.FileExists("ca.db.serial")) { var f = fso.OpenTextFile("ca.db.serial", 2, true); f.WriteLine("01"); f.Close(); } if(!fso.FileExists("ca.db.index")) fso.CreateTextFile("ca.db.index"); // // create an own SSLeay config // var fconf = fso.OpenTextFile("ca.config", 2, true); var dir = "D:/openssl/share"; fconf.WriteLine("[ ca ]"); fconf.WriteLine("default_ca = CA_own"); fconf.WriteLine("[ CA_own ]"); fconf.WriteLine("dir = " + dir); fconf.WriteLine("certs = " + dir + "/certs"); fconf.WriteLine("new_certs_dir = " + dir + "/ca.db.certs"); fconf.WriteLine("database = " + dir + "/ca.db.index"); fconf.WriteLine("serial = " + dir + "/ca.db.serial"); fconf.WriteLine("RANDFILE = " + dir + "/ca.db.rand"); fconf.WriteLine("certificate = " + dir + "/certs/ca.crt"); fconf.WriteLine("private_key = " + dir + "/private/ca.key"); fconf.WriteLine("default_days = 365"); fconf.WriteLine("default_crl_days = 30"); fconf.WriteLine("default_md = md5"); fconf.WriteLine("preserve = no"); fconf.WriteLine("policy = policy_anything"); fconf.WriteLine("[ policy_anything ]"); fconf.WriteLine("countryName = optional"); fconf.WriteLine("stateOrProvinceName = optional"); fconf.WriteLine("localityName = optional"); fconf.WriteLine("organizationName = optional"); fconf.WriteLine("organizationalUnitName = optional"); fconf.WriteLine("commonName = supplied"); fconf.WriteLine("emailAddress = optional"); fconf.Close(); // // sign the certificate // var shell = WScript.CreateObject("WScript.Shell"); stdout.WriteLine("CA signing: " + csr_filename + " -> " + cert_filename + ":"); shell.Run("openssl ca -config ca.config -out " + crt_filename + " -infiles " + csr_filename, 1, true); stdout.WriteLine("CA verifying: " + crt_filename + " <-> CA cert"); shell.Run("openssl verify -CAfile " + dir + "/certs/ca.crt " + crt_filename, 1, true); // // cleanup after SSLeay // if(fso.FileExists("ca.config")) fso.DeleteFile("ca.config", true); if(fso.FileExists("ca.db.serial.old")) fso.DeleteFile("ca.db.serial.old", true); if(fso.FileExists("ca.db.index.old")) fso.DeleteFile("ca.db.index.old", true); }
Run();
|
|