0

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

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

4

2 回答 2

1

当您从 Visual Studio 运行它时,您正在使用您的凭据运行应用程序。甚至 IIS Express 也在您的凭据下运行。

如果您将证书导入 CurrentUser 存储,那么您将其导入到您帐户下的存储中。当您将 ASP.NET 页面部署到 IIS 时,默认情况下它在 DefaultAppPool 用户 (IIS APPPOOL\DefaultAppPool) 下运行。该用户有不同的证书存储,并且可能没有任何这些证书。

将这些证书导入 LocalMachine 存储(mmc 中的本地计算机存储)并设置私钥的权限,以便 DefaultAppPool(或您设置的任何其他池用户)可以访问此私钥或将这些证书导入 DefaultAppPool 的 CurrentUser 存储或(快速而不是漂亮的方法)将 DefaulAppPool 设置为使用您的帐户凭据。

我个人会选择第一个选项。

于 2014-04-04T10:34:37.980 回答
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 控制台安装了证书。

于 2014-04-04T08:41:14.977 回答