У меня 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){});