我正在开发一个必须调用Web服务的WCF应用程序。使用http进行测试时,该程序工作正常。当使用https时,我收到异常“在X509商店中找不到具有查找类型的指定X509证书......”。在Windows和.Net上运行时,该程序可以正常使用https,但在Linux / Mono设置中运行时会引发异常。我已经使用certmgr.exe实用程序在Linux系统上添加了证书,并且可以使用相同的实用程序列出它们,因此它们似乎可以保存在商店中。应用程序从其app.config文件中获取其配置信息。我试图使用各种不同的x509FindTypes和findValues(FindBySubjectName,FindBySerialNumber,FindByThumbprint)找到证书,并尝试将证书添加到计算机和个人商店,但不断获得相同的异常,引用任何查找类型,位置和我设置的商店。 app.config的相关部分如下:
<system.serviceModel>
<client>
<endpoint address="https://webserviceaddress"
binding="basicHttpBinding"
bindingConfiguration="secureBasicHttpBinding"
behaviorConfiguration="secureClientBehavior"
contract="IWebServiceContract">
</endpoint>
</client>
<behaviors>
<endpointBehaviors>
<behavior name="secureClientBehavior" >
<clientCredentials>
<clientCertificate storeLocation="CurrentUser" storeName="My" x509FindType="FindBySerialNumber" findValue="AFCB6CC0417B2D459BB1F859CE070661" />
<serviceCertificate>
<authentication revocationMode="NoCheck" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="secureBasicHttpBinding"
receiveTimeout="00:10:00" sendTimeout="00:10:00"
maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647">
<security mode="TransportWithMessageCredential">
<message clientCredentialType="Certificate" />
</security>
</binding>
</basicHttpBinding>
</bindings>
</system.serviceModel>
如果有人可以提供任何有关在商店中找到证书的帮助,我们将不胜感激。
提前感谢您的回复。