2014-04-04 69 views
0

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

什么是在IIS管理器中作出的必要设置。我们有3个证书,一个.pfx和两个.cer根文件。

+0

你能描述一下你如何调用Web服务吗?也许添加一些示例代码。也请描述你在哪里以及如何使用证书(pfx,cer ...) – pepo

回答

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控制台certficates。

1

当您从Visual Studio运行它时,您将使用凭据运行该应用程序。即使IIS Express在您的凭据下运行。

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

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

我会亲自去第一个选项。

+0

我设法使它工作,这正是你上面回答的问题,谢谢你的努力...... –