Node.JS、Socket.IO 的 SSL/TLS 双向认证笔记
node.js 天然就支持 SSL/TLS(除非是你自己编译的时候把 openssl 给剔除了),但是,如果你希望用客户端数字证书登录,则须配置成双向认证的方式,并要在服务端取得客户端证书的具体信息(如将证书的subject与用户身份进行绑定),文档未细述且无范例可参考。
废话少说,看代码:
C:\nodejs\test\https\testHttps.js
var https = require('https'), fs = require('fs'), util = require('util');
var sslopts = {
pfx: fs.readFileSync('svrCert.p12'),
passphrase: 'You,1SB!',
requestCert: true,
rejectUnauthorized: true
};
var server = https.createServer(sslopts, function (req, res) {
var usrcert = req.connection.getPeerCertificate(false);
res.writeHead(200);
res.end('<xmp>User Cert: ' + util.inspect(usrcert) + '</xmp>');
});
server.listen(4430, function() {
console.log('--------server bound to 4430');
});
如果你曾经在其他服务器上配置过双向 SSL,是不是觉得这也很简单?
那么,node.js 的好伙伴 socket.