如何安全地保存 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 文件中。我的问题是:
- 对于网络安全措施,是否有任何其他方法来执行 X509Certifacate 实例的序列化和序列化?
- 我是否应该添加另一层在保存之前加密
exportedBytes
并在加载它们之前解密?
我不知道您为什么要将 X509Certificate 序列化为 XML,但总的来说我会说不要。如果您坚持这样做,我建议您对字节数组进行 base64 编码并将其保存在您的 xml.
中
关于您关于安全的问题;您应该只存储 X509Certificate 的 public 部分,并将私钥保存在另一个地方。
我推荐以下文章 Eight tips for working with X.509 certificates in .NET,其中有一些很棒的提示。
您可以将证书及其私钥加密存储在 PKCS 12 格式的文件中。 Here 是关于 .NET PKCS 12 的一些信息 API。
我有一个 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 文件中。我的问题是:
- 对于网络安全措施,是否有任何其他方法来执行 X509Certifacate 实例的序列化和序列化?
- 我是否应该添加另一层在保存之前加密
exportedBytes
并在加载它们之前解密?
我不知道您为什么要将 X509Certificate 序列化为 XML,但总的来说我会说不要。如果您坚持这样做,我建议您对字节数组进行 base64 编码并将其保存在您的 xml.
中关于您关于安全的问题;您应该只存储 X509Certificate 的 public 部分,并将私钥保存在另一个地方。
我推荐以下文章 Eight tips for working with X.509 certificates in .NET,其中有一些很棒的提示。
您可以将证书及其私钥加密存储在 PKCS 12 格式的文件中。 Here 是关于 .NET PKCS 12 的一些信息 API。