从 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."
这就是我正在做的事情。
- 在 NodeJS 代码中,我在使用 SSL 证书进行身份验证时 ping API 端点
- 我有一个 SSL 证书存储在 GCP 云存储中,并按照此处给出的说明将其公开(仅用于测试)。
- 此处给出了访问此对象的说明。
使用
gsutil
,我可以访问证书。$ gsutil ls -r gs://[BUCKET_NAME]/[SSLCERT].pem
gs://[BUCKET_NAME]/[SSLCERT].pem
当我从 NodeJS 代码访问 SSL 证书时,出现上述错误。访问该文件的 URL 是:
http://storage.googleapis.com/[BUCKET_NAME]/[SSLCERT].pem
如果我从本地磁盘访问证书并运行 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();