繁体   English   中英

certificateValidationMode似乎被Azure忽略

[英]certificateValidationMode seems to be ignored by Azure

我正在为Windows Azure开发使用WSFederation进行身份验证的解决方案(Web应用程序)。 自从处于天蓝色测试阶段(本地测试成功)以来,我决定使用与本地测试相同的自签名证书。

这里的问题是我收到一条错误消息,指出“ X.509证书CN = mytestsite.com.br不在受信任的人商店中。X.509证书CN = mytestsite.com.br链构建失败。使用的证书具有无法验证的信任链

这个错误是完全有道理的,因为它是一个自签名证书,但是由于我处于暂存环境中(而且我现在绝对不愿意向我的赞助商要求预算内的有效证书...),我想使用自签名一个。 所以我将certificateValidationMode更改为“ None”,但是仍然收到相同的验证错误……看来验证模式被忽略了!!!

有人知道我该怎么做才能使事情正常吗? (购买有效的证书将是我的最后一枪,因为目前这对我的预算来说是非常昂贵的……)

我只是使用自签名证书,使用代码将其“部署”到您的Trusted People商店,一切都应该很好。 无论如何,这将更接近于实际的生产使用(并且,如果您在生产中使用PeerTrust,则即使在使用真实证书的情况下,也必须在其中执行相同的操作)。

    private static void CopyServerCertIntoPeopleStore()
    {
        var myStore = new X509Store(StoreName.My, StoreLocation.LocalMachine);
        myStore.Open(OpenFlags.ReadOnly);
        var peopleStore = new X509Store(StoreName.TrustedPeople, StoreLocation.CurrentUser);
        var cert = myStore.Certificates.Find(
                                X509FindType.FindByThumbprint,
                                SettingFetcher.GetSetting(SettingFetcher.SettingType.ApplicationVariable, "WcfServiceCertificateThumbprint"),
                                true
                              ).OfType<X509Certificate2>().First();

        peopleStore.Open(OpenFlags.ReadWrite);
        peopleStore.Add(cert);
    }

使用类似这样的东西,只需用RoleEnvironment.GetConfigurationSettingValue或其他可用来获取指纹的设置替换SettingFetcher。

我设法通过在STS web.config中添加“ certificateValidationMode”来做到这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM