使用SSL的Node中的SOAP请求

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用SSL的Node中的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

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

谢谢!

答案

根据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作为证书传递。

以上是关于使用SSL的Node中的SOAP请求的主要内容,如果未能解决你的问题,请参考以下文章

使用node-soap发送正确的soap请求

在构建 SOAP API 时如何使用 SSL?

Node.js 使用 soap 模块请求 WebService 服务接口

使用node-soap连接Bing Ads API

Java Paypal 集成 SOAP JAX-WS - SSL 握手异常

nodejs post 请求soap 报错.大神求助