使用 Nodejs 调用需要证书的 SOAP 服务

pyt*_*sta 1 soap wsdl client-certificates ssl-certificate node.js

Nodejs SOAP 客户端抛出错误 [ERR_TLS_CERT_ALTNAME_INVALID]:主机名/IP 与证书的替代名称不匹配:

我正在尝试在nodejs 中使用soap调用SOAP 服务。但是我收到错误[ERR_TLS_CERT_ALTNAME_INVALID]: 主机名/IP 与证书的替代名称不匹配: IP: XXX.XXX.XXX.XXX 不在证书列表中:。我是 Nodejs 新手,不知道如何调用需要 Nodejs 证书的 SOAP 服务。也欢迎在 Nodejs 中调用需要证书的 SOAP 服务的其他方式。

var url = "https://soapserviceurl?wsdl";

soap.createClient(url, function (err, client) { 
    if (err) {
        console.log("Error Occurred!!");
        console.log(err);       
    }
    else {
        console.log(client.describe());
    }
});
Run Code Online (Sandbox Code Playgroud)

Vic*_*sky 5

请尝试

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0" //this is insecure 
Run Code Online (Sandbox Code Playgroud)
或者:

    var soap = require('soap'),
        request = require('request'),
        fs = require('fs');

    var url = "https://soapserviceurl?wsdl";
    
    var req = request.defaults({
       strictSSL: false
    );

    soap.createClient(url, { 
            request : req
    }, function(err, client) {
    	//your code
    });
Run Code Online (Sandbox Code Playgroud)

或者:

soap.createClient(url, { 
            request : req,
    		wsdl_options: {
            cert: fs.readFileSync('cert/cert.pem'), //path to pem
            key: fs.readFileSync('cert/cert.key'),   //path to private key
            rejectUnauthorized: false
        }
    }, function(err, client) {
    	//your code
});
Run Code Online (Sandbox Code Playgroud)