2016-04-27 85 views
2

我正在使用openssl-wrapper,一個nodejs包。很容易定製參數!但是我得到了一個錯誤,我無法讓代碼正常工作。如何在NodeJS中使用openssl-wrapper生成RSA密鑰?

的實現代碼:

Q.fcall(function caKey() { 
    var params = { 
    des3: true, 
    passout: 'pass:1234567890', 
    out: key, 
    '1024': false 
    }; 
    console.log("caKey", dataFolder, params); 
    return openssl.qExec('genrsa', params); 
}).then(function debugOutput(data) { 
    // onFullfill 
    console.log("done", data); 
    }) 
    .catch(function (err) { 
    // get err 
    console.error(err); 
    }); 

我得到這個錯誤:

caKey D:/certs-dev { '1024': false, 
    des3: true, 
    passout: 'pass:1234567890', 
    out: 'D:/certs-dev/ca/ca.key' } 
Wed, 27 Apr 2016 11:40:24 GMT openssl-wrapper > openssl genrsa -des3 -passout pass:1234567890 -out D:/certs-dev/ca/ca.key 1024 
15316:error:02001000:system library:fopen:system library:bss_file.c:175:fopen('','rb') 
15316:error:2006D002:BIO routines:BIO_new_file:system lib:bss_file.c:180: 
15316:error:0E078002:configuration file routines:DEF_LOAD:system lib:conf_def.c:197: 

我在想什麼?我怎樣才能使它工作?

請幫幫我。非常感謝你 !

+1

只是猜測,但問題是OpenSSL配置文件無法找到。你必須做一些事情,比如'設置OPENSSL_CONF = c:\ OpenSSL-Win32 \ bin \ openssl.cfg'。嘗試搜索[OPENSSL配置文件窗口](http://www.google.com/search?q=OPENSSL+configuration+file+windows+site%3Astackoverflow.com)以查看類似問題 – jww

+0

謝謝,它爲我工作!在NodeJS中,我在調用函數之前設置了一個變量'process.env.OPENSSL_CONF =「c:\ OpenSSL-Win32 \ bin \ openssl.cfg」'。它也很好。 – Vunb

回答

1

由於@jww

按照他的指導,錯誤是由配置環境變量解決:

set OPENSSL_CONF=c:\OpenSSL-Win32\bin\openssl.cfg 

或設置應用程序的NodeJS環境變量,之前調用該函數。

process.env.OPENSSL_CONF = "c:\OpenSSL-Win32\bin\openssl.cfg"