gpt4 book ai didi

node.js - 如何在 NodeJS 中解码 X.509 主题(来自客户端证书)

转载 作者:太空宇宙 更新时间:2023-11-03 13:20:24 24 4
gpt4 key购买 nike

问题:如何解码 X.509 NodeJS 中证书字符串中的主题数据?

背景

当使用 Nginx 作为反向代理时,我可以使用以下设置让 Nginx 验证客户端证书:

server {
listen 443 ssl;
listen [::]:443 ssl;

ssl on;
ssl_certificate /path/to/bundle.crt;
ssl_certificate_key /path/to/server.key;
ssl_client_certificate /path/to/client_certificates.crt;
ssl_verify_client optional_no_ca;
ssl_verify_depth 2;

ssl_protocols TLSv1.1 TLSv1.2;
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 60m;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DHE+AES128:!ADH:!AECDH:!MD5';

server_name some_server;
root /path/to/www;

location /api/ {
proxy_pass http://my_api_server:1234/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-SSL-CERT $ssl_client_escaped_cert;
}
}

现在这会填充 header ,以便我可以在 header 中检索证书:

let cert = req.headers['x-ssl-cert'];
cert = decodeURI(cert);
const interestingStuff = x509.getSubject(cert);

现在很不幸 x509 -package 似乎不允许 cert 成为字符串,或者我犯了某种错误。产生的错误是:错误:上下文创建失败:文件不存在。:233123-123123-123123

提示

issue提示它需要有正确的换行符,但在运行 JSON.stringify 时它看起来不错: "-----BEGIN CERTIFICATE-----\nASDWQESAD..\n..ASDASD\n---- -结束证书-----\n"

其他内容

注意:当不使用代理并直接将 https 中的 ca 配置为 getPeerCertificate() 时,这在普通 NodeJS 中是微不足道的返回一个带有 subject 元素的对象。

这个问题部分涉及:expressjs setting tls connect https nginx server for request

最佳答案

罪魁祸首似乎是 decodeURI。最明显的提示是证书中的每一行都应具有相同的最大长度,即 64 个字符。使用decodeURIComponent解决了这个问题。

decodeURIComponent 封装在 try-catch 语句中可能也不错。

关于node.js - 如何在 NodeJS 中解码 X.509 主题(来自客户端证书),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55694575/

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