Asp.NET - 调用Web服务证书错误,IIS管理器

时间:2014-04-04 07:43:50

标签: asp.net-mvc iis ssl-certificate iis-manager

我们开发了ASP.NET Web应用程序,它调用Web服务来获取数据。需要证书才能访问Web服务。当我们从Visual Studio启动应用程序时,一切正常,但是当我们在IIS服务器上发布站点时,它不起作用。

在IIS管理器中进行哪些必要设置才能使其正常工作。我们有3个证书,一个.pfx和两个.cer根文件。

2 个答案:

答案 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控制台安装了证书。