gpt4 book ai didi

WCF 证书链信任身份验证 : "The caller was not authenticated by the service."

转载 作者:行者123 更新时间:2023-12-04 15:14:59 25 4
gpt4 key购买 nike

我想在与 WCF 服务通信时使用基于证书的加密和验证。所以我创建了测试证书,“TempCA”作为我的根 CA,“SignedByCA”作为由该 CA 签署的客户端证书。

当我将客户端证书放在“本地计算机\受信任的人”中并使用 certificateValidationMode="PeerTrust" 时,该服务会识别客户端,并且一切都按预期进行。但是通过信任链验证( certificateValidationMode="ChainTrust" ),我遇到了错误“调用者未通过服务进行身份验证”。

相关服务器端配置:

<behaviors>
<serviceBehaviors>
<behavior name="customServiceBehavior">
[...]
<serviceCredentials>
<clientCertificate>
<authentication certificateValidationMode="ChainTrust" trustedStoreLocation="LocalMachine" mapClientCertificateToWindowsAccount="false" />
</clientCertificate>
<serviceCertificate findValue="TempCA"
storeLocation="LocalMachine"
storeName="My"
x509FindType="FindBySubjectName" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="soapBindingConfiguration">
<security mode="Message">
<message clientCredentialType="Certificate" />
</security>
</binding>
</wsHttpBinding>
</bindings>

相关客户端配置 (其余由“添加服务引用”自动创建):
<endpointBehaviors>
<behavior name="customClientBehavior">
<clientCredentials>
<clientCertificate findValue="SignedByCA" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName" />
</clientCredentials>
</behavior>
</endpointBehaviors>

客户端和服务器证书都与其私钥一起存储在“本地计算机\个人”中(因为我在一台计算机上进行测试),而“TempCA”(我的根证书)也在“本地计算机\受信任的根证书颁发机构”中”。

我在这里缺少什么?任何工作示例?

最佳答案

我终于发现了问题所在。必须禁用吊销检查。我的测试 CA 显然没有关联的 CRL,因此在这种情况下,WCF 似乎阻止了每个客户端,因为它无法验证。

<clientCertificate>
<authentication certificateValidationMode="ChainTrust"
revocationMode="NoCheck" ←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←←
[...] />
</clientCertificate>

关于WCF 证书链信任身份验证 : "The caller was not authenticated by the service.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7329711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com