Мне нужно вызвать веб-службу SOAP, запущенную сторонней организацией (официальной публичной организацией), которая обслуживается по протоколу HTTPS (SSL).Я отправил CSR и получил от них 3 сертификата: сертификат домена, сертификат выдающего центра сертификации и сертификат корневого центра сертификации.Теперь я могу сделать следующее:
- получить доступ к их странице входа через HTTPS с помощью cUrl, указав параметры --cert, --key и --cacert в командной строке;
- вызывать веб-службу с помощью пользовательского интерфейса SOAP (который также помог сгенерировать запрос XML SOAP);
Тем не менее, когда я пытаюсь вызвать веб-службу из приложения Node.js, используя «soap»Я получаю сообщение об ошибке self_signed_cert_in_chain.Код выглядит следующим образом:
var soap = require('soap');
var fs = require('fs');
var url = <the URL>;
<file names specified>
var myKey = fs.readFileSync(keyFileName);
var myCert = fs.readFileSync(certFileName);
var issuingCACert = fs.readFileSync(issuingCAFileName);
var rootCACert = fs.readFileSync(rootCAFileName);
var bundleCACert = fs.readFileSync(bundleCAFileName);
process.env.NODE_EXTRA_CA_CERTS = "<bundled certificate file>";
console.log(process.env);
soap.createClient(urlPropertiesSearch, {
//pfx: pfxSet,
key: myKey,
cert: myCert,
ca: [issuingCACert, rootCACert],
//ca: bundleCACert,
//passphrase: password,
strictSSL: true,
},
function(err, client) {
if(err) {
console.log('client creation error: ', err);
}
else {
}
});
Как вы можете видеть, я попытался указать сертификаты выдачи CA и корневого CA по отдельности и объединить их в пакет, а также попытался установить переменную среды NODE_EXTRA_CA_CERTS.И все же ошибка сохраняется.