mac使用带有ssl证书的Node验证失败

eKe*_*vin 10 ssl https pfx node.js

在Node api doc中指定的我使用openssl尝试了第一个带有自己创建和签名的证书.一切都很顺利,除了无法测试客户端的事实,因为它需要一个ca证书.当我尝试第二种方法(使用pfx但没有使用密钥,cert)时,https.createserver会抛出错误

crypto.js:145
      c.context.loadPKCS12(pfx);
                ^
Error: mac verify failure
    at Object.exports.createCredentials (crypto.js:145:17)
    at Server (tls.js:1130:28)
    at new Server (https.js:35:14)
    at Object.exports.createServer (https.js:54:10)
    at Object.<anonymous> (C:\iTollonServer\iTollonServer\iTollonServer\app.js:105:7)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
Run Code Online (Sandbox Code Playgroud)

来自Node Api的代码:

// curl -k https://localhost:8000/
var https = require('https');
var fs = require('fs');

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

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

var https = require('https');
var fs = require('fs');

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

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

eKe*_*vin 33

在pfx情况下你应该添加选项

passphrase: 'password'
Run Code Online (Sandbox Code Playgroud)

  • 如果你正在寻找在MAC node.js的实施样本apnagent样品,像我这样的,原来的样本文件不完整仅通过设置**agent.set("PFX文件",PFX);**,你需要还要添加一行:**agent.set("passphrase",<你p12文件密码>);**以避免mac验证失败 (7认同)