【问题标题】:How can I consume a web service sending certificate JKS using NodeJS and soap module?如何使用 NodeJS 和 soap 模块使用发送证书 JKS 的 Web 服务?
【发布时间】:2019-12-17 05:45:08
【问题描述】:

我必须使用 JKS 文件(即证书)来使用 Web 服务。我正在使用网络服务,代码是,我正在使用 NPM 的肥皂模块:

var soap = require('soap');
var url = 'https://HOST:PORT/SERVICE?wsdl';
soap.createClient(url, function (err, client) {

    if(err){
        console.log(err);
    }
    client.Operation(args, function (err, result) {
        console.log(result);
    });
});

试试这个的结果是:

Error: unable to verify the first certificate
    at TLSSocket.onConnectSecure (_tls_wrap.js:1260:34)
    at TLSSocket.emit (events.js:196:13)
    at TLSSocket._finishInit (_tls_wrap.js:737:8)
    at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:569:12) {
  code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE'

我必须使用 JKS 文件使用 Web 服务,我不知道如何使用该文件使用它,这是成功通信所必需的。

【问题讨论】:

  • 您可以将.jks 文件转换为.pem 文件,然后使用它吗?根据this thread,至少这样更快。
  • 感谢您的回复,我这样做了,但问题仍然存在,因为创建客户端,它发送请愿书,我需要在创建客户端之前设置 SSL 配置
  • 感谢您的帮助,您的评论很有帮助

标签: node.js soap ssl-certificate consumer jks


【解决方案1】:

解决办法是:

  1. 我下载了 Mac 的程序密钥库资源管理器。
  2. 从 JKS 文件生成证书。
  3. 更改使用 wsdl_options 配置的方法 soap.createClient,然后使用安全参数化发送请求。

    soap.createClient(url, { wsdl_options: { cert: fs.readFileSync('./resources/.cer', 'utf-8') } }....

另一个变化是,在本地调用 WSDL:

var path = require('path');
var url = path.join(__dirname, '../<path>', '<name>.wsdl');

【讨论】:

    猜你喜欢
    • 2019-05-23
    • 2018-04-13
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 2015-09-19
    相关资源
    最近更新 更多