简而言之,这是一个场景。我有一个使用表单身份验证和自定义成员资格提供程序的ASP.NET应用我使用ServiceHostFactory创建了一个WCF客户端和一个ASP.NET ServiceHost。到目前为止,一切都运作良好,但要在现实世界中进行部署,我需要保护它。我似乎无法找到如何为服务设置证书。我想使用已经与托管我的服务的ASP.NET应用程序关联的证书。
如何以一种自动将证书设置为托管Web应用程序证书的方式设置证书,而无需手动识别证书。如果用户必须安装WCF程序集并对配置文件进行更改并且必须知道安装了哪些证书,那么它将是一个真正的PITA。
这是我到目前为止所调集的内容,但是无法使其工作,并且在安装过程中无法重新编译而无法配置。
serviceHost.Credentials.ServiceCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindByIssuerDistinguishedName, "mycertificate");
是否有ASP.NET Api会返回与我可以传递给SetCertificate的托管应用程序相关联的证书?另外,我如何处理没有安装证书的情况,但我仍然希望WCF连接,虽然不安全?
答案 0 :(得分:1)
这取决于您是否要使用传输或消息级别安全性。如果您只是希望您的Web服务像其他任何网页一样通过https工作,那么在您的WCF配置中,您无需指定证书,只需启用传输安全性,例如:
<basicHttpBinding>
<binding name="basicHttpsSecured" sendTimeout="00:02:00">
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
</binding>
</basicHttpBinding>
然后在IIS中,您可以像在任何其他ASP.NET站点上一样在网站上设置SSL证书。如果您没有通过IIS托管,而是将其作为自托管Windows服务或其他东西,那么您必须在配置中设置证书,但在IIS中托管时,您可以让IIS完成工作。 / p>
如果您想要进行消息级安全性,这意味着您通过非安全的常规http进行传输,但您的消息内容已加密,那么您可以设置
<security mode="Message">
关于绑定,并指定用于加密消息的证书。但是,听起来您正在谈论为您的Web服务使用ssl / https。