如何安全地保存x509证书?

时间:2018-01-08 09:46:26

标签: c# xml ssl x509certificate

我有一个具有以下实现的类:

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

关于你的安全问题;您应该只存储X509Certificate的公共部分并将私钥保存在其他位置。

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

答案 1 :(得分:0)

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