gpt4 book ai didi

.net - 如何在 WCF 服务中将密码与我的证书 (X.509) 一起发送?

转载 作者:行者123 更新时间:2023-12-04 20:57:22 27 4
gpt4 key购买 nike

我有一个 WCF 服务,它使用 X.509 证书作为客户端凭据。大多数这些凭据不需要密码即可使用,只需安装即可。

但是现在,我们的客户有一个证书,每次使用时都需要输入密码(即每次服务运行时)。此服务每天调用其他服务 n 次,但如果无法验证证书,则会失败。

到目前为止,每次遇到此问题时,我们都会要求客户订购(并支付)新证书,但我和我们的客户都厌倦了每次都经历这些。我自己没有做过服务,对WCF和服务也没有太多的经验。

我想知道的是:是否可以将此密码与有关证书的所有其他信息一起输入到我们的配置文件中?

这是服务的 XML 配置的一部分:

<configuration>
<system.serviceModel>
<client>
<endpoint
address="***"
binding="basicHttpBinding"
bindingConfiguration="***"
behaviorConfiguration="HTTPSEndpoint"
contract="***"
name="***" />
</client>
<bindings>
<basicHttpBinding>
<binding
name="***"
sendTimeout="00:05:00"
maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647" >
<readerQuotas maxStringContentLength="2147483647" />
<security mode="Transport">
<transport clientCredentialType="Certificate" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name ="HTTPSEndpoint">
<clientCredentials>
<clientCertificate
findValue="***"
storeLocation="LocalMachine"
storeName="My"
x509FindType="FindBySubjectName"/>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
</configuration>

最佳答案

从客户端计算机上的证书存储中检索证书时需要输入密码是因为该证书是在选中“启用强私钥保护”选项的情况下导入的:

Importing a certificate to the certificate store.

这通常被设置为标准服务器强化过程的一部分。它适用于在用户出席时证书通过远程系统对用户进行身份验证的情况。

由于密码提示是由于证书导入过程引起的,而不是证书的固有属性,因此购买新证书不会改变任何内容。

我不知道在检索密码时无法以编程方式将密码传递给证书存储区。但是,如果您考虑一下,即使您成功了,您也必须以某种方式保护所述密码。您可以加密 .config 文件的密码,但现在您必须存储加密 key 。依此类推......某处会有一个松散的结局,使“强大的私钥保护”变得毫无意义。

基本上,您的客户不能同时拥有它:他们不能“启用强大的私钥保护”,并且希望每次需要客户端证书时都不必输入密码。他们正确存储证书要好得多。

对于无人值守的客户端服务,最安全的客户端证书存储方法如下:

  • 在具有加密强密码的特定帐户下运行您的客户端服务。
  • 从 LocalMachine 存储中删除证书。安装在 LocalMachine 存储中的证书可供机器上运行的任何帐户访问。
  • 在客户端服务帐户的 CurrentUser 存储中安装证书。这意味着该证书只能由客户端服务帐户访问。安装证书时,请务必取消选中“启用强私钥保护”选项。
  • 关于.net - 如何在 WCF 服务中将密码与我的证书 (X.509) 一起发送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4104747/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com