如何安全地保存 x509 证书?

how to save an x509 certificates securely?

我有一个 class 具有以下实现:

public class ObjectSer
    {
        public X509Certificate cer;
        public string name;
    }

我想使用 System.Xml.Serialization; 在 XML 文件中序列化 ObjectSer 的实例,以便稍后在其他应用程序中加载。当我检查输出文件时,只有 name 属性。 经过一些researches我发现我应该将证书导出到byte[],所以我修改了ObjectSer实现:

public class ObjectSer
    {
        public X509Certificate cer;
        public string name;
        public byte[] exportedBytes;
    }

现在,我可以保存和加载证书,但我不想将导出的证书字节作为纯文本存储在 XML 文件中。我的问题是:

  1. 对于网络安全措施,是否有任何其他方法来执行 X509Certifacate 实例的序列化和序列化?
  2. 我是否应该添加另一层在保存之前加密 exportedBytes 并在加载它们之前解密?

我不知道您为什么要将 X509Certificate 序列化为 XML,但总的来说我会说不要。如果您坚持这样做,我建议您对字节数组进行 base64 编码并将其保存在您的 xml.

关于您关于安全的问题;您应该只存储 X509Certificate 的 public 部分,并将私钥保存在另一个地方。

我推荐以下文章 Eight tips for working with X.509 certificates in .NET,其中有一些很棒的提示。

您可以将证书及其私钥加密存储在 PKCS 12 格式的文件中。 Here 是关于 .NET PKCS 12 的一些信息 API。