Скручиваемость равнозначна в nodejs (подделка имени хоста ip) - PullRequest
0 голосов
/ 16 октября 2018

У меня https-сервер работает на nginx.Nginx содержит два серверных блока.Оба они используют разные ключи и сертификаты.Это самозаверяющие сертификаты, предоставляемые центром сертификации.

Блок 1: (Блок по умолчанию)

listen 443 ssl;

ssl_session_cache shared:SSL:10m;
ssl_session_timeout  5m;

ssl_certificate      /etc/opt/cde/.nginx/cert.pem;
ssl_certificate_key  /etc/opt/cde/.nginx/key.pem;

Блок 2:

server_name example.com www.example.com

server_names_hash_bucket_size 64;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout  5m;

ssl_certificate      /etc/opt/abc/.nginx/certificate.pem;
ssl_certificate_key  /etc/opt/abc/.nginx/key.key;
ssl_client_certificate /etc/opt/abc/.nginx/caBundle.pem;

Сервер два имеет имя abc.com.Я хочу сделать https запрос на сервер abc.com.IP-адрес хост-машины является чем-то, то есть 10.1.1.36.Если я сделаю http-запрос с именем хоста = 10.1.1.36, запрос отправится на сервер по умолчанию в nginx, следовательно, проверка сертификата https завершится неудачно.Как я могу сделать запрос, который будет идти к IP, но с именем хоста как example.com, поэтому он попадает на второй блок сервера на nginx?

С помощью curl этот запрос может быть выполнен с помощью параметра --resolve.

curl --cacert cabundle.crt --cert certificate.pem --cert-type PEM --key privatekey.prv --pass passphrase --key-type PEM  --resolve example.com:443:10.1.1.36  https://example.com:443/api/v1/authdata -k GET

Как этого добиться с помощью модуля запроса nodejs https?

var options = {
        hostname: hostname,
        //host: hostname,
        port: 443,
        path: path,
        method: method,
        headers: requestHeaders,
        ca: fs.readFileSync("C:\\cabundle.crt"),
        key: fs.readFileSync("C:\\privatekey.prv"),
        cert: fs.readFileSync("C:\\certificate.pem"),
        passphrase: "passphrase"
    };
    var req = https.request(options, function(res){});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...