【问题标题】:Can the C# OpenSSL Wrapper read a PKCS12 file and extract the SecretKey entriesC# OpenSSL Wrapper 能否读取 PKCS12 文件并提取 SecretKey 条目
【发布时间】:2019-04-11 03:09:36
【问题描述】:

我有一个由 Java keytool 生成的 .p12 文件,需要从中读取所有密钥 (AES 256) 条目,以便我可以使用它来加密我的 C# 应用程序中的内容。

我看过 Bouncy Castle,它似乎只处理非对称密钥和 X509 证书。

C# OpenSSL 包装器可以做到这一点吗?

【问题讨论】:

  • 进一步挖掘后,我发现openssl 或充气城堡都不支持从PKCS12 文件中读取“SecretBag”OID。我能看到的唯一另一种方法是使用 RSA 保护我的对称密钥,并将它们放在受密码保护的 zip 中以复制(便携式)Java 密钥存储的功能,或者将自定义 OID 条目导出为 PFX 的 X509 证书,然后可以被 C# 和 Java 使用。有人对这些建议有什么想法吗?

标签: c# openssl pkcs#12


【解决方案1】:

.p12 包含 X509Certificate 包括。 (可选)私有非对称密钥。 据我所知,那里没有对称 (AES) 密钥,只有非对称密钥。

如果您想将其用于 S/MIME,它会使用随机对称 kes(AES、3DES、...)并使用您发送电子邮件的用户的非对称密钥加密此密钥当然是你自己的。
查看适用于 S/MIME 的 MimeKit 和/或 MailKit。

如果你只是想加密一些东西:
只需生成一个随机 AES 密钥(只是一些随机字节)并将所有内容放入某种容器中,其中包括非对称加密的 AES 密钥。您可以使用 MimeKit 中的 ApplicationPKCS(模仿 S/MIME)或自己做一些事情。只需确保识别您用于加密对称密钥的证书即可。

【讨论】:

  • 感谢您的回复。您能否提供一个使用 C# MimeKit 从 PKCS 密钥存储文件中读取 SecretKeyEntry(s) 的示例。我一直在努力思考它,但只是在这方面没有足够的知识。
  • 你没有!如果您有适当的 .p12 证书,请将它们导入 Windows 证书存储(或其他系统上的 Mono 等效证书)并使用 WindowsSecureContext 解密 Mimemessage。如果您不使用 S/MIME,最好使用您自己的容器类型并假设证书会以某种方式呈现。
猜你喜欢
  • 1970-01-01
  • 2021-05-22
  • 2023-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多