Javascript 缺少快速SSL身份验证功能?
我正在尝试将SSL身份验证与中讨论的Express一起使用 我们在服务器代码中使用TypeScript(除了客户端代码之外),以获得强大的键入优势。 我们正在使用Express 4.14.1、@types/Express:“^4.0.36” 上面的链接(与大多数服务器端NodeJ一样)是JavaScript而不是TypeScript。链接中有一段代码如下所示:Javascript 缺少快速SSL身份验证功能?,javascript,node.js,express,typescript,ssl,Javascript,Node.js,Express,Typescript,Ssl,我正在尝试将SSL身份验证与中讨论的Express一起使用 我们在服务器代码中使用TypeScript(除了客户端代码之外),以获得强大的键入优势。 我们正在使用Express 4.14.1、@types/Express:“^4.0.36” 上面的链接(与大多数服务器端NodeJ一样)是JavaScript而不是TypeScript。链接中有一段代码如下所示: app.use(函数(请求、恢复、下一步){ 如果(!请求客户授权){ 返回res.status(401).send('用户未授权')
app.use(函数(请求、恢复、下一步){
如果(!请求客户授权){
返回res.status(401).send('用户未授权');
}
#检查证书本身,甚至在此基础上进行验证!
var cert=req.socket.getPeerCertificate();
如果(证书主题){
console.log(cert.subject.CN);
}
next();
});
帮了大忙
对于TypeScript,我需要导入tls.TLSSocket
以完成所有的键入工作,
并将req.socket
转换为TLSSocket
:
((req.socket) as TLSSocket).authorized
((req.socket) as TLSSocket).getPeerCertificate().
在常规的旧JavaScript中,它变得有点复杂。在我的开发环境中,我创建了一个httpServer(http.createServer
)。在我的生产环境中,我创建了一个httpsServer(https.createServer
)。因此,使用JavaScriptreq.client
和req.socket.getPeerCertificate()如果我没有在我的生产环境中工作,则没有定义
,因为服务器不是使用https.createServer
创建的
感谢robertklep!我不确定
req.client
,但是应该定义req.socket
,因为Expressreq
对象是“增强版本”内置http.ClientRequest
,具有属性。对于TLS连接,这是的实例,具有和属性。哦,req.client
与req.socket
()相同。