如何在Node.js 0.11.8及更高版本中使用tlsSocket.renegotiate(options,callback)

 手机用户2702934045 发布于 2022-12-21 21:17

我是node.js的新手,并且正在运行一个简单的https服务器。现在,当用户请求某个上下文路径时,服务器应启动SSL重新协商并请求客户端证书认证。我看到在node.js 0.11.8及更高版本中支持此功能。

到目前为止,我已经尝试过了,但是没有重新谈判。甚至不会引发错误。

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

var optSsl = {
   key: fs.readFileSync('ssl/server/keys/server.key'),
   cert: fs.readFileSync('ssl/server/certs/server.crt'),
   ca: fs.readFileSync('ssl/ca/ca.crt'),
   requestCert: false,
   rejectUnauthorized: true,
   ciphers: 'ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS',
   honorCipherOrder: true
};

var optClientAuth = {
    requestCert: true,
    rejectUnauthorized: true
};

var server = https.createServer(optSsl, function(req, res){
    res.writeHead(200);
    res.end("Hello World\n");
});

server.on('request', function(req, res){
    console.log('request emitted on ' + req.url);
    if (req.url == '/secure') {
        try {
            var socket = req.connection;
            socket.renegotiate(optClientAuth, function(err){
                if (!err) {
                    console.log(req.connection.getPeerCertificate());
                } else {
                    console.log(err.message);
                }
            });
        } catch (err) {
            console.log(err);
        }
    };
});

server.on('secureConnection', function(socket) {
    console.log('Secure connection established');
});

server.listen(8443);

感谢您的支持。

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有