NPM package `pem` doesn't seem to work in AWS lambda NodeJS 10.x (results in OpenSSL error)

前端 未结 5 2051
萌比男神i
萌比男神i 2021-01-02 20:49

When I run the function locally on NodeJS 11.7.0 it works, when I run it in AWS Lambda NodeJS 8.10 it works, but I\'ve recently tried to run it in

5条回答
  •  余生分开走
    2021-01-02 21:11

    PEM NPM docs says:

    Setting openssl location In some systems the openssl executable might not be available by the default name or it is not included in $PATH. In this case you can define the location of the executable yourself as a one time action after you have loaded the pem module:

    So I think it is not able to find OpenSSL path in system you can try configuring it programmatically :

    var pem = require('pem')
    pem.config({
      pathOpenSSL: '/usr/local/bin/openssl'
    }) 
    

    As you are using AWS Lambda so just try printing process.env.path you will get idea of whether OpenSSL is included in path env variable or not.

    You can also check 'OpenSSL' by running below code

    const exec = require('child_process').exec;
    exec('which openssl',function(err,stdopt,stderr){
          console.log(err ? err : stdopt);    
    })
    

    UPDATE

    As @hoangdv mentioned in his answer openssl is seems to be removed for node10.x runtime and I think he is right. Also, we have read-only access to file system so we can't do much.

    @Seth McClaine, you can give try for node-forge npm module. One of the module built on top of this is 'https://github.com/jfromaniello/selfsigned' which will make your task easier

提交回复
热议问题