我的问题是:我需要向服务器发出SSL SOAP请求,但是我需要通过PFX传递证书。我也需要进行基本身份验证。这是我的代码:
var soap = require('soap');
var fs = require('fs');
var url = 'https://servicos.ccee.org.br:443/ws/PingService?wsdl';
var pfx = fs.readFileSync('MY PFX FILE');
var soapHeader = {
"codigoPerfilAgente": 68543,
"Username": "MY USER",
"Password": "PASSWORD"
};
soap.createClient(url, {
wsdl_options: {
pfx: pfx,
strictSSL: true,
}
}, function (err, client) {
client.setSecurity(new soap.WSSecurity('MY USER', 'PASSWORD'))
if (err) {
throw err;
}
var args = {
nome: "tio"
};
client.helloWorld(args, function (err, res) {
client.addSoapHeader(soapHeader);
if (err)
throw err;
console.log(res);
});
});
问题是当我创建客户端并尝试在其中使用它时:
soap.createClient(url, {
wsdl_options: {
pfx: pfx,
strictSSL: true,
}
}, function (err, client) {
client.setSecurity(new soap.WSSecurity('MY USER', 'PASSWORD'))
我有一个未定义的客户端。在创建客户端的过程中是否可以通过PFX?
我在互联网上进行了大量搜索,发现有一种使用wsdl_options传递PFX文件或传递.CRT和.PEM的方法。但是我没有找到任何很好的例子。我拥有所有3个文件(.CRT,PEM和PFX),并尝试使用:
client.setSecurity(new soap.ClientSSLSecurity(privateKey, publicKey));
但是在这种情况下,需要在设置setSecurity函数之前创建客户端。
感谢您的帮助!