- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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>
最佳答案
从客户端计算机上的证书存储中检索证书时需要输入密码是因为该证书是在选中“启用强私钥保护”选项的情况下导入的:
这通常被设置为标准服务器强化过程的一部分。它适用于在用户出席时证书通过远程系统对用户进行身份验证的情况。
由于密码提示是由于证书导入过程引起的,而不是证书的固有属性,因此购买新证书不会改变任何内容。
我不知道在检索密码时无法以编程方式将密码传递给证书存储区。但是,如果您考虑一下,即使您成功了,您也必须以某种方式保护所述密码。您可以加密 .config 文件的密码,但现在您必须存储加密 key 。依此类推......某处会有一个松散的结局,使“强大的私钥保护”变得毫无意义。
基本上,您的客户不能同时拥有它:他们不能“启用强大的私钥保护”,并且希望每次需要客户端证书时都不必输入密码。他们正确存储证书要好得多。
对于无人值守的客户端服务,最安全的客户端证书存储方法如下:
关于.net - 如何在 WCF 服务中将密码与我的证书 (X.509) 一起发送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4104747/
我是一名优秀的程序员,十分优秀!