如何设置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令牌,然后手动解码。 你通过它通过加入X-SSL-CERT
与$ssl_client_escaped_cert
。 请确保您使用的是Nginx的1.13或更高版本为$ssl_client_escaped_cert
没有在1.12存在。
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连接。 相反,您解码x-ssl-cert
从上面使用header x509
包:
let cert = req.headers['x-ssl-cert'];
try {
cert = decodeURIComponent(cert);
console.log(x509.getSubject(cert));
} catch (error) {
console.log('Bad SSL-certificate?', error);
}