使用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.js 使用 soap 模块请求 WebService 服务接口