我可以在 SO 上找到一些类似的问题,但我不确定这个问题的答案。当我阅读有关此的不同帖子时,我变得越来越困惑。所以问这个让我满意。
我有一个托管在 IIS 上的 WCF 服务。我有一个连接到该服务并调用方法的客户端。我现在尝试使用证书来利用传输安全性。
在客户端我有一个配置
<bindings>
<basicHttpBinding>
<binding name="testBinding">
<security mode="Transport">
<transport clientCredentialType="Certificate" proxyCredentialType="Basic"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="testBehavior">
<clientCredentials>
<clientCertificate storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName" findValue="client007"/>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
在服务器端我有一个配置
<behaviors>
<serviceBehaviors>
<behavior name="testServiceBehavior">
<serviceMetadata httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<serviceCredentials>
<clientCertificate>
<authentication certificateValidationMode="PeerTrust" trustedStoreLocation="LocalMachine"/>
</clientCertificate>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="testServiceBinding">
<security mode="Transport">
<transport clientCredentialType="Certificate"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
现在,我想要的场景是,只有将其公钥安装在服务器受信任的人上的客户端才能访问该服务。
但就我而言,无论我是否在受信任的人中安装公钥。我可以使用我自己创建的任何证书访问该服务。
我检查了匿名身份验证是否启用,是因为这个吗?当我禁用匿名访问时,我收到一条错误消息
http请求未经客户端身份验证从服务器收到的身份验证是基本领域
如何确保只有公钥在服务器上的客户端才能访问该服务?
这种验证不适用于运输安全吗?请帮我。谢谢