【问题标题】:Get a .p7b file from a .jks file从 .jks 文件中获取 .p7b 文件
【发布时间】:2023-11-24 14:46:01
【问题描述】:

我有一个 .Net SAML 实现,它根据 .p7b 文件中的 PKCS 7 certificate 验证断言的签名。

我的一位客户拥有基于 Java 的身份提供者。他们只能在 Java key store .jks 文件中提供他们的证书。

我可以验证他们的身份提供者发送的断言,但如果不根据 Java 密钥库中的证书验证这些断言,我就无法检查这些断言是否由受信任的提供者签名。

我可以在网上找到很多关于如何将.p7b 证书添加到.jks 文件的信息,但没有关于如何反转该过程的信息。

如何从提供的.jks 文件中获取.p7b 证书(.Net 和 Windows 可以打开)?

或者,我使用本机 X509Chain 实现将 .p7b 加载到 .Net 中。如果我无法转换 .jks 是否有任何方法可以将其加载到 .Net 中,以便我检查断言的签名?

【问题讨论】:

    标签: single-sign-on x509certificate saml jks p7b


    【解决方案1】:

    事实证明,Java 中有一个命令行实用程序可以满足我的需要。在 Java 运行时目录(我的机器上的 C:\Program Files (x86)\Java\jre7\bin)中有一个名为 keytool 的实用程序(我的换行符是为了便于阅读):

    >keytool -importkeystore 
             -srckeystore clientStore.jks -srcstoretype JKS 
             -destkeystore outputStore.p12 -deststoretype PKCS12
    

    这会生成一个名为 outputStore.p12 的输出存储,我可以使用 X509Certificate2Collection.Import() 在 .Net 中加载它

    【讨论】: