1

从 GCP 云存储读取 SSL 证书文件时出现以下错误。

* Connected to [my.website.com] (A.b.C.D) port 443 (#0)
* found 6 certificates in /home/<username>/[CAINFO].crt
* found 597 certificates in /etc/ssl/certs
* ALPN, offering http/1.1
* error reading X.509 key or certificate file: Error while reading file.
* Closing connection 0
Error: SSL connect error
    at Error (native)
file." 

这就是我正在做的事情。

  1. 在 NodeJS 代码中,我在使用 SSL 证书进行身份验证时 ping API 端点
  2. 我有一个 SSL 证书存储在 GCP 云存储中,并按照此处给出的说明将其公开(仅用于测试)。
  3. 此处给出了访问此对象的说明。
  4. 使用gsutil,我可以访问证书。

    $ gsutil ls -r gs://[BUCKET_NAME]/[SSLCERT].pem gs://[BUCKET_NAME]/[SSLCERT].pem

  5. 当我从 NodeJS 代码访问 SSL 证书时,出现上述错误。访问该文件的 URL 是:http://storage.googleapis.com/[BUCKET_NAME]/[SSLCERT].pem

  6. 如果我从本地磁盘访问证书并运行 NodeJS 代码,而不是云存储,它可以正常工作。所以,证书是有效的。

我的代码大纲:

const Curl = require('node-libcurl').Curl;
const curl = new Curl();

const URL = 'https://api-end-point.com';

// let sslcert = '/home/path/to/[SSLCERT].pem';  << this works
let sslcert = 'http://storage.googleapis.com/[BUCKET_NAME]/[SSLCERT].pem';  << NOT working

curl.setOpt('URL', URL);
... 
curl.setOpt('SSLCERT', sslcert);
... 

curl.on('end', function(statusCode, body, headers) {

    console.info("Status Code: " + statusCode);
    console.info(body.length);
    this.close();
}); 

curl.on('error', (err) => {
    console.log(err);
}); 

curl.perform();
4

0 回答 0