【问题标题】:error:0909006C:PEM routines:get_name:no start line - for google cloud platform in herokuerror:0909006C:PEM routines:get_name:no start line - 适用于 heroku 中的谷歌云平台
【发布时间】:2022-12-20 11:14:58
【问题描述】:

当我尝试使用 @google-cloud/storage 时,它​​返回此错误

Error: error:0909006C:PEM routines:get_name:no start line 
2021-12-13T10:36:19.800822+00:00 app[web.1]: at Sign.sign (internal/crypto/sig.js:110:29)
2021-12-13T10:36:19.800823+00:00 app[web.1]: at Object.sign (/app/node_modules/gtoken/node_modules/jwa/index.js:152:45) 
2021-12-13T10:36:19.800823+00:00 app[web.1]: at Object.jwsSign [as sign] (/app/node_modules/gtoken/node_modules/jws/lib/sign-stream.js:32:24) 
2021-12-13T10:36:19.800824+00:00 app[web.1]: at GoogleToken.requestToken (/app/node_modules/gtoken/build/src/index.js:225:31) 
2021-12-13T10:36:19.800824+00:00 app[web.1]: at GoogleToken.getTokenAsyncInner (/app/node_modules/gtoken/build/src/index.js:163:21) 
2021-12-13T10:36:19.800824+00:00 app[web.1]: at GoogleToken.getTokenAsync (/app/node_modules/gtoken/build/src/index.js:142:55) 
2021-12-13T10:36:19.800825+00:00 app[web.1]: at GoogleToken.getToken (/app/node_modules/gtoken/build/src/index.js:94:21) 
2021-12-13T10:36:19.800825+00:00 app[web.1]: at JWT.refreshTokenNoCache (/app/node_modules/google-auth-library/build/src/auth/jwtclient.js:171:36) 
2021-12-13T10:36:19.800826+00:00 app[web.1]: at JWT.refreshToken (/app/node_modules/google-auth-library/build/src/auth/oauth2client.js:152:24) 
2021-12-13T10:36:19.800826+00:00 app[web.1]: at JWT.getRequestMetadataAsync (/app/node_modules/google-auth-library/build/src/auth/oauth2client.js:284:28) 
2021-12-13T10:36:19.800827+00:00 app[web.1]: at JWT.getRequestMetadataAsync (/app/node_modules/google-auth-library/build/src/auth/jwtclient.js:94:26) 
2021-12-13T10:36:19.800827+00:00 app[web.1]: at JWT.getRequestHeaders (/app/node_modules/google-auth-library/build/src/auth/oauth2client.js:247:37) 
2021-12-13T10:36:19.800827+00:00 app[web.1]: at GoogleAuth.authorizeRequest (/app/node_modules/google-auth-library/build/src/auth/googleauth.js:600:38) 
2021-12-13T10:36:19.800828+00:00 app[web.1]: at processTicksAndRejections (internal/process/task_queues.js:95:5) 
2021-12-13T10:36:19.800828+00:00 app[web.1]: at async Promise.all (index 1) 
{ 2021-12-13T10:36:19.800829+00:00 app[web.1]: library: 'PEM routines', 
2021-12-13T10:36:19.800829+00:00 app[web.1]: function: 'get_name', 
2021-12-13T10:36:19.800829+00:00 app[web.1]: reason: 'no start line', 
2021-12-13T10:36:19.800829+00:00 app[web.1]: code: 'ERR_OSSL_PEM_NO_START_LINE' 
2021-12-13T10:36:19.800830+00:00 app[web.1]: } 
2021-12-13T10:36:19.800879+00:00 app[web.1]: Error error:0909006C:PEM routines:get_name:no start line 

看来错误是基于来自谷歌云服务帐户的私钥

-----BEGIN PRIVATE KEY-----
ENTIREKEY
-----END PRIVATE KEY----- 

【问题讨论】:

    标签: node.js heroku google-cloud-platform


    【解决方案1】:

    我通过删除键中的 行并手动添加新行来解决这个问题,例如:

    私钥: ---BEGIN PRIVATE KEY---- ShfkkJHNJK Jeidj ---END PRIVATE KEY----

    到:

    
    ---BEGIN PRIVATE KEY----
    ShfkkJHNJK
    Jeidj
    ---END PRIVATE KEY----
    
    

    注意:不要忘记最后的

    【讨论】:

    • 我注意到这主要发生在 heroku 上
    • 与谷歌云存储相同
    【解决方案2】:

    看来问题出在“我们如何导入”密钥上。有几种解决方案,但在我的情况下,当我从 env 变量导入密钥时,我想要的最佳解决方案是在我想从 env 导入密钥时添加 .replace(/\n/gm, " ")

    前:

    process.env.PRIVATE_KEY
    

    后:

    process.env.PRIVATE_KEY?.replace(/\n/gm, "
    ")
    

    【讨论】:

      猜你喜欢
      • 2020-06-02
      • 2020-08-06
      • 1970-01-01
      • 1970-01-01
      • 2016-10-15
      • 2020-12-11
      • 2020-07-26
      • 1970-01-01
      • 2018-07-19
      相关资源
      最近更新 更多