我们开发了ASP.NET Web应用程序,它调用Web服务来获取数据。需要证书才能访问Web服务。当我们从Visual Studio启动应用程序时,一切正常,但是当我们在IIS服务器上发布站点时,它不起作用。
在IIS管理器中进行哪些必要设置才能使其正常工作。我们有3个证书,一个.pfx和两个.cer根文件。
答案 0 :(得分:1)
当您从Visual Studio运行它时,您将使用您的凭据运行该应用程序。即使IIS Express也在您的凭据下运行。
如果您将证书导入CurrentUser商店,则将其导入您帐户下的商店。 将ASP.NET页面部署到IIS时,默认情况下它将在DefaultAppPool用户(IIS APPPOOL \ DefaultAppPool)下运行。该用户具有不同的证书存储,并且可能没有任何这些证书。
将这些证书导入LocalMachine存储(mmc中的本地计算机存储)并设置私钥权限,以便DefaultAppPool(或您设置的任何其他池用户)可以访问此私钥 或者将这些证书导入DefaultAppPool的CurrentUser存储区 或者(快速且不漂亮的方式)将DefaulAppPool设置为使用您的帐户凭据。
我个人会选择第一个选项。
答案 1 :(得分:0)
这是来自web.config的代码
<behaviors>
<endpointBehaviors>
<behavior name="Client2WaySSL">
<clientCredentials>
<clientCertificate findValue="CN=lsu.test.client.service.mup.hr" storeLocation="CurrentUser" />
<serviceCertificate>
<defaultCertificate findValue="CN=test.service.mup.hr" storeLocation="CurrentUser" storeName="TrustedPeople" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_MUP.LokalnaSamouprava.FizickaOsoba.WebServiceInterface">
<security mode="Transport">
<transport clientCredentialType="Certificate" proxyCredentialType="None" realm="" />
</security>
</binding>
<binding name="BasicHttpBinding_MUP.LokalnaSamouprava.FizickaOsoba.WebServiceInterface1" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://lsu.test.service.mup.hr:9001/FizickaOsobaService.svc" binding="basicHttpBinding" behaviorConfiguration="Client2WaySSL" bindingConfiguration="BasicHttpBinding_MUP.LokalnaSamouprava.FizickaOsoba.WebServiceInterface" contract="MUPServis.MUPLokalnaSamoupravaFizickaOsobaWebServiceInterface" name="MUP.LokalnaSamouprava.FizickaOsoba.WebServicePort" />
</client>
我们已通过MMC控制台安装了证书。