C# 将客户端证书作为嵌入式资源存储在web服务中是不安全的还是不好的做法?

C# 将客户端证书作为嵌入式资源存储在web服务中是不安全的还是不好的做法?,c#,ssl,ssl-certificate,x509certificate2,C#,Ssl,Ssl Certificate,X509certificate2,我正在用C#设计一个web API服务,它连接到第三方以检索其信息。第三方需要客户端证书进行相互身份验证。该代码与安装在我的开发机器上的证书配合良好 在写这篇文章的过程中,我意识到使用X509Certificate2类,在从API支持DLL中的嵌入式资源加载证书之后,实际上可以从字节数组加载证书。我的第一个想法是,如果我这样做,它将使部署和未来的扩展更加容易,因为托管它的服务器不必安装客户端证书(它将托管在多个不同的服务器上,将来还会有更多) 我担心的是,与在服务器上安装证书相比,我可能会做一些

我正在用C#设计一个web API服务,它连接到第三方以检索其信息。第三方需要客户端证书进行相互身份验证。该代码与安装在我的开发机器上的证书配合良好

在写这篇文章的过程中,我意识到使用X509Certificate2类,在从API支持DLL中的嵌入式资源加载证书之后,实际上可以从字节数组加载证书。我的第一个想法是,如果我这样做,它将使部署和未来的扩展更加容易,因为托管它的服务器不必安装客户端证书(它将托管在多个不同的服务器上,将来还会有更多)

我担心的是,与在服务器上安装证书相比,我可能会做一些不安全或不好的事情,特别是因为它还意味着将密码存储在其中(或存储在数据库中,或其他任何地方)

所以我的问题是,我应该避免这样做吗?我的直觉告诉我应该避免,但这会让以后的事情变得更容易


我对证书不太熟悉,我在网上寻找意见的研究已经引发了关于如何做到这一点的几次讨论,但我已经知道了这一点。它们似乎都没有提到你是否应该这样做。

坏主意有很多原因。有人可以从你的二进制文件中窃取证书。证书过期时会发生什么?我不知道这部分。如果他们可以访问服务器和dll,我假设他们也可以访问服务器上安装的证书。关于过期的观点很好,但是我们相对经常地部署这个服务,所以这不会是一个很大的问题。