繁体   English   中英

使用椭圆曲线键的Node.js HTTPS请求

[英]Node.js HTTPS request using Elliptic Curve key

我想构建一个HTTPS客户端,该客户端连接到需要相互认证的HTTPS Server。 此外,客户端密钥是椭圆曲线密钥而不是RSA密钥。 为了支持椭圆曲线键,我用OpenSSL 1.0.2a重新编译了Node.js。

在我的node.js程序中,我设置了选项以指定密钥和证书,

var options = {
// These are necessary only if using the client certificate authentication
key: fs.readFileSync('client-key.pem'),
cert: fs.readFileSync('client-cert.pem'),

当我运行它时,出现此错误:

Error: error:0906D06C:PEM routines:PEM_read_bio:no start line
at Error (native)
at Object.createSecureContext (_tls_common.js:110:19)
at Object.exports.connect (_tls_wrap.js:854:21)
at Agent.createConnection (https.js:84:14)
at Agent.createSocket (_http_agent.js:196:16)
at Agent.addRequest (_http_agent.js:168:23)
at new ClientRequest (_http_client.js:156:16)
at Object.exports.request (http.js:51:10)
at exports.request (https.js:138:15)
...

这表明Node.js无法读取EC密钥。 此错误消息类似于openssl尝试将密钥作为X509证书读取时:

openssl x509 -text -in sample.key 
unable to load certificate
140735234208608:error:0906D06C:PEM routines:PEM_read_bio:no start    
line:pem_lib.c:701:Expecting: TRUSTED CERTIFICATE

如何强制Node.js将此密钥作为EC密钥加载?

正确配置openssl 1.0.2a后,将加载EC密钥。 确保Node.js的openssl版本正确。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM