gpt4 book ai didi

node.js - expressjs设置tls连接https nginx服务器进行请求

转载 作者:太空宇宙 更新时间:2023-11-04 01:55:27 25 4
gpt4 key购买 nike

如何设置expressjs的请求正确识别与https nginx服务器的TLS连接,以便我可以通过getPeerCertificate进行身份验证?

这是我的 nginx 配置,用于将请求传输到expressjs api

location /api {

proxy_pass http://10.88.132.14:4337/api;

proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}

最佳答案

您需要传递 SSL token ,然后手动对其进行解码。您可以通过添加 X-SSL-CERT$ssl_client_escaped_cert 来传递它。确保您使用的是 Nginx 1.13 或更高版本,因为 1.12 中不存在 $ssl_client_escaped_cert

location /api {
proxy_pass http://10.88.132.14:4337/api;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-SSL-CERT $ssl_client_escaped_cert;
}

现在您无法使用 getPeerCertifice(),因为这需要完整的 SSL 连接。相反,您可以使用 x509 包从上面解码 x-ssl-cert header :

let cert = req.headers['x-ssl-cert'];
try {
cert = decodeURIComponent(cert);
console.log(x509.getSubject(cert));
} catch (error) {
console.log('Bad SSL-certificate?', error);
}

关于node.js - expressjs设置tls连接https nginx服务器进行请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48161254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com