使用SSL的Node中的SOAP请求

时间:2017-12-21 09:20:47

标签: node.js web-services ssl curl soap

最近,我一直在处理SOAP请求。

我设法使用node-soap模块将成功的请求发送到http服务。但是,现在我想使用它向外部 https Web服务发送请求。

我已设法使用带有cUrl的.cer文件发送SSL请求。但是当在node.js代码中尝试这个时,我会遇到错误。根据我的阅读(请参阅node-soap模块上的ClientSSLSecurity),我需要一个密钥(以.key格式)和一个证书(以.pem格式)。我不知道这是否需要私钥?我设法从.cer文件中提取公钥。

我尝试过以下代码:

var createSoapClient = function (){
    soap.createClient(url, function(err,client){
        client.setSecurity(new soap.ClientSSLSecurity(
            'mycert.cer',
            'pubkey.key'
        ));
        if(err)
            console.error(err);
        else {
            client.MyOperation(args,function(err,response){
                if(err){
                    console.error(err);
                }
                else{
                    console.log(response);
                }
            })
        }
    });
}

但是,这会导致以下错误消息:

Error: error:0906D06C:PEM routines:PEM_read_bio:no start line

我错过了什么?它是私钥吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

根据npm发现的包,关于ClientSSLSecurity:

https://www.npmjs.com/package/axl-node-soap
https://www.npmjs.com/package/soap-x509
https://www.npmjs.com/package/strong-soap#clientsslsecurity
https://www.npmjs.com/package/soap#clientsslsecurity

我认为您向ClientSSLSecurity传递了错误的参数。它似乎是密钥然后是证书,您将证书传递给密钥

尝试做这样的事情:

   client.setSecurity(new soap.ClientSSLSecurity(
        'pubkey.key',
        'mycert.cer'

    ));

您使用的是哪个套餐?

您的密钥/证书可能是错误的

尝试重新生成证书:

openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem
openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out server.crt

然后将key.pem作为密钥,将server.crt作为证书传递。