ios – 使用带有NodeJs HTTPS的certificates.cer

前端之家收集整理的这篇文章主要介绍了ios – 使用带有NodeJs HTTPS的certificates.cer前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我为 IOS推送通知生成了一个.cer文件,我希望将它与NodeJS HTTPS模块一起使用.

我发现HTTPS模块的唯一例子是使用.pem和.sfx文件,而不是.cer:

var options = {
  key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem')
};

or 

var options = {
  pfx: fs.readFileSync('server.pfx')
}

https.createServer(options,function (req,res) {
  res.writeHead(200);
  res.end("hello world\n");
}).listen(8000);

解决方案吗

解决方法

.cer文件可以使用两种不同的格式进行编码:PEM和DER.

如果您的文件使用PEM格式编码,您可以像使用任何其他.pem文件一样使用它(有关详细信息,请参见Node.js documentation):

const https = require("https");

const options = {
    key: fs.readFileSync("key.pem","utf8"),cert: fs.readFileSync("cert.cer","utf8")
};

https.createServer(options,(req,res) => {
    res.writeHead(200);
    res.end("Hello world");
}).listen(8000);

如果您的文件使用DER格式编码,则首先需要使用OpenSSL将其转换为.pem文件(该命令取自here):

openssl x509 -inform der -in cert.cer -out cert.pem

然后可以使用上面的代码,cert文件名是cert.pem而不是cert.cer:

const https = require("https");

const options = {
    key: fs.readFileSync("key.pem",cert: fs.readFileSync("cert.pem",res) => {
    res.writeHead(200);
    res.end("Hello world");
}).listen(8000);

如果您拥有与cert.cer文件匹配的证书颁发机构的密钥,您可以将其包含在https.createServer的options参数中,如下所示(代码示例假定该文件名为ca.pem并且已编码使用PEM格式):

const https = require("https");

const options = {
    ca: fs.readFileSync("ca.pem",key: fs.readFileSync("key.pem",res) => {
    res.writeHead(200);
    res.end("Hello world");
}).listen(8000);

有关https.createServer及其参数的更多信息,请查看documentation.

注意:上面的所有选项都假设您还有一个以PEM格式编码的公钥,名为key.pem,并且.cer文件名为cert.cer.如果您没有公钥,请评论或将其添加到问题本身,我会相应地更新我的答案.

如果您不确定文件编码的格式,您可以尝试这两种选项,看看哪种格式适合您.

猜你在找的iOS相关文章