【问题标题】:How to generate BinarySecurityToken (X509PKIPathv1) from .p12 file如何从 .p12 文件生成 BinarySecurityToken (X509PKIPathv1)
【发布时间】:2018-04-18 20:43:24
【问题描述】:

我正在尝试从 C# 客户端使用 Java Web 服务。该服务需要具有值类型X509PKIPathv1BinarySecurityToken 元素。

<wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" 
      ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509PKIPathv1">
      MIIH......
</wsse:BinarySecurityToken>

由于WCF does not support X509PKIPathv1 值类型,我手动生成SOAP 消息,使用SignedXml 类对其进行签名,使用EncryptedXml 对其进行加密并使用WebClient 类发送它。至于BinarySecurityToken元素的值,我使用了SoapUI中生成的值,用于同一个证书,是可以的。

但是,我希望能够以编程方式从 .p12 文件生成此值,而不必每次证书过期时都从 SoapUI 中再次粘贴它。

WS-Security documentation 有点模糊,所以我不知道该怎么做。这是它提供的有关此令牌类型的所有信息:

#X509PKIPathv1:打包在 PKIPath 中的 X.509 证书的有序列表

如何在 C# 中从 .p12 文件生成这个值? SoapUI 以某种方式做到了。

【问题讨论】:

  • 我有同样的问题,除了从 C++/OpenSSL 的角度来看。

标签: c# ws-security


【解决方案1】:

因此,这可能无法完全解决您的问题,但可能会对您有所帮助。

这个:

#X509PKIPathv1:打包在 PKIPath 中的 X.509 证书的有序列表

means 是您用来签署消息的 asn1 序列或证书链。你甚至可以看到它here

提供一些上下文asn1 是一种独立于您使用的机器的方式来表示数据的方式。此数据是二进制的,人类无法读取,因此您将其转换为 bade 64,这就是您在该字段中看到的内容。

我不完全确定您的 .p12 文件的确切内容是什么,但至少我认为它具有您用来签署您的消息的私钥的证书,并且可能是直到公开信任证书或CA.

我主要是一名 C++ 开发人员,我知道 openssl 提供了一个类似 C 的 API 来读取证书 manipulate the underlying asn1 结构并将其输出为字符串。

很抱歉没有提供更详细的信息或代码示例

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 2012-04-24
    • 2014-04-19
    • 1970-01-01
    相关资源
    最近更新 更多