简体   繁体   中英

SOAP request in Node using SSL

Recently, I've been working with SOAP requests.

I've managed to use the node-soap module to be able to send successful requests to http services. However, now I want to use it to send a request to an external https web service.

I have managed to send SSL requests using a .cer file with cUrl. But when trying this in the node.js code, I am getting errors. From what I have read (see ClientSSLSecurity on the node-soap module), I need a key (in .key format) and a certificate (in .pem format). I do not know whether this requires a private key or not? I have managed to extract a public key from my .cer file.

I have tried the below code:

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);
                }
            })
        }
    });
}

however, this results in the below error message:

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

What am I missing? Is it a private key?

Thank you!

According to package found on npm, regarding 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

I assume that you've pass wrong argument to ClientSSLSecurity. It seems to take the key then the certificate , you're passing the certificate then the key .

Try to do something like this :

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

    ));

Which package are you using ?


You're couple key/cert is probably wrong

Try to regenerate the certificate :

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

then pass key.pem as the key and server.crt as the certificate.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM