我有一个WCF服务,我想用客户端证书保护,但我无法让它在Azure上工作。
我通过在亚马逊上的标准Windows服务器上托管服务,从方程式中删除了Azure。我将服务和客户端证书(都没有自签名)安装到此服务器上的本地计算机“个人”存储中,包括链式证书,它都按预期工作,从我的本地PC调用,客户端证书设置为绑定/行为。如果没有指定证书,它确实不工作,因此它确实以这种方式正常工作。
然后我将服务部署到Azure。客户端和服务器证书上传到门户网站并在配置中针对“本地计算机/我的”进行设置,并且CA和根证书已上载,我在各种商店中尝试了它们,包括“我的”,“可信任”和“CA”。我尝试的每个变体,我继续得到“ HTTP请求被禁止与客户端身份验证方案'匿名'”从本地完全相同的程序调用,唯一的变化是客户端端点地址。
作为另一个细节,我可以在没有证书的情况下使用它,因此Web服务没有问题,但我不确定如何解决客户端和服务之间的证书握手实际发生的情况。
答案 0 :(得分:1)
我终于得到了它的工作,并在这里写了一个指南:Blogspot.co.uk
我不确定之前我遇到了什么,因为我没有做任何太奇怪的事情让它发挥作用。我想也许我在配置的某个地方有一个小缺陷,我最终通过重新开始修复。无论如何,它可以工作并在Azure上提供一些有用的安全性。
答案 1 :(得分:0)
请参阅我对this SO post的回答 - 底线,LocalMachine / My中的证书,并使用csdef文件中的提升权限运行添加:
<Runtime executionContext="elevated" />