Вопрос : Как мне декодировать субъектные данные 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;
}
}
Теперь это заполняет заголовок, чтобы я мог получить сертификат в заголовке:
let cert = req.headers['x-ssl-cert'];
cert = decodeURI(cert);
const interestingStuff = x509.getSubject(cert);
Теперь, к сожалению, пакет x509 , похоже, не позволяет cert
быть строкой, или я совершаю какую-то ошибку. Произошла ошибка: Error: Context creation failed: File doesn't exist.: 233123-123123-123123
.
Подсказка
Этот выпуск намекает на то, что ему нужно иметь правильные символы новой строки, но при запуске JSON.stringify выглядит нормально: "-----BEGIN CERTIFICATE-----\nASDWQESAD..\n..ASDASD\n-----END CERTIFICATE-----\n"
Другие вещи
Примечание : это просто в простом NodeJS, когда не используется прокси-сервер и непосредственно настраивается ca
в https
, так как getPeerCertificate () возвращает объект с subject
элемент.
Этот вопрос частично связан с: настройкой expressjs tls connect https nginx server для запроса