【问题标题】:Manually creating a HTTP SOAP Request with Signing SOAP messages using X.509 certificate使用 X.509 证书手动创建带有签名 SOAP 消息的 HTTP SOAP 请求
【发布时间】:2015-11-03 02:55:33
【问题描述】:

我正在尝试通过 http SOAP 从 NetSuite 向另一个系统发送消息,但有人告诉我我已经发送了签名的肥皂消息。 NetSuite 只有一个操作叫做 nlapiRequestURL(url, postdata, headers);我正在尝试使用此方法发送手动创建的 SOAP 消息。我遇到的问题是弄清楚如何将证书添加到标题中。以前有人这样做过吗?

我了解到使用证书签署肥皂消息是我需要本地密钥库中的私钥和公共密钥。本 java 教程展示了如何做到这一点,但我将如何在 NetSuite 中做类似的事情。

https://dzone.com/articles/signing-soap-messages

【问题讨论】:

  • 如果你的SOAP端点是https,那么https的实现逻辑不应该隐式处理吗?您能否指出 SOAP API 身份验证的文档,或许我们可以提供更多帮助?
  • 从我在 java 示例中看到的是,我需要拥有私钥和公钥才能生成签名的肥皂消息。所以,我使用的是来自 NetSuite url system.sandbox.netsuite.com 的证书。我确信 NetSuite 不会给我他们的私钥,所以他们很可能需要生成私钥和公钥。然后将其与他们的 CA 证书相关联。然后听起来他们需要给我一些 api 访问权限才能使用那里的密钥库来生成签名的肥皂消息。
  • 您的 SOAP 服务提供商会接受自签名证书还是仅依赖受信任的 CA?这家伙似乎使用了自签名证书john-james-andersen.com/blog/service-now/… 进行 WS
  • 提供者想要一个 CA 证书
  • 查看我的答案以获得解决方案,因为 netsuite 不会授予他们证书的私钥访问权限

标签: web-services soap netsuite


【解决方案1】:

一种可能的解决方案是用 Java 编写自己的代理 Web 服务器 或任何其他服务器端语言。

以下是我的建议摘要:

1) 将请求详细信息从 NetSuite 发送到代理服务器,使用 Suitelet 或预定脚本。

2) 在代理服务器中创建签名的 SOAP 请求并发送到 供应商 API

3) 现在,要回复 NetSuite,有两个选项 a) 您 保持与 NetSuite 的连接打开,直到您收到响应并 将其发送回 NetSUite 的脚本 b)您回复 NetSuite RESTlet,它使设计异步,可以特别好 如果周转时间超过 45 秒。

另外,我建议使用 HTTPS 编写 Web 服务器,您的服务器具有受信任的 CA 签名证书,因此,Web 服务器和 NetSuite 之间的通信是安全的。这样您的通信就会安全(附注:我无法回答 SSL 100% 安全的问题,http://security.stackexchange.com 对此主题进行了很好的讨论)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    • 2011-02-24
    • 2018-09-29
    • 1970-01-01
    相关资源
    最近更新 更多