小编典典

SQL Server数据库中的WCF证书存储

sql

我有一个SQL数据库,用于存储WCF服务和其他服务的客户端证书。(X509等)。我想使用此存储(而不是“我的”)来检索此证书(而不是在web.config中声明),然后将其用于WCF。

我试图在此网站和Google上进行搜索,但似乎没有太大帮助。

目前我在做

 var targetEndpoint = new EndpointAddress(targetLogicalAddress, targetIdentity);
 MyTransportPortTypesClient proxy = new MyTransportPortTypesClient("WebConfigSection", targetEndpoint);

因此,理想情况下,我想摆脱“ WebConfigSection”,而传递某种经过证书签名的WCF对象。

有人知道如何实现这一目标吗?


我终于解决了这个,这就是我的做法。(我将分享我的经验,这样每个人都可以使用它)这无需使用任何计算机CertificateStore。它纯粹是从数据库到客户端代理。

我已经创建了X509Certificate2对象并分配了物理文件(在byte []中)。如果密码受密码保护,您也可以输入密码。

然后,我已将证书分配给我的代理客户端。就像是 :

proxy.ClientCredentials.ClientCertificate = __MyCertificate

现在,当我在app.config中被互联网化时,我已经操纵了clientproxy。就是这样。所有这些属性将在您的代理对象中。

希望这可以帮助。


阅读 191

收藏
2021-04-28

共1个答案

小编典典

AFAIK这至少是非常困难的,如果没有失败的话是不可能的。WCF使用SChannel
SSPI提供程序
进行身份验证,并且此SSPI提供程序将仅从SChannel
CSP提供程序
加载证书。为了使用数据库中的证书,必须先将证书加载到PROV_RSA_SCHANNEL
CSP密钥库中,然后将该密钥库的证书上下文传递给AcquireCredentialsHandle。例如,这就是数据库镜像使用存储在数据库中的证书进行身份验证的方式。尽管也可以在托管代码中执行所有这些步骤,但是我不确定是否可以将它们插入WCF:我 希望 是这样,但可能并非出于胆小。

2021-04-28