0

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

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

这个错误是完全有道理的,因为它是一个自签名证书,但是因为我在一个暂存环境中(我现在绝对不想向我的赞助商要求额外的预算来获得一个有效的证书......)我想使用反正是自签的。所以我把certificateValidationMode改成“None”,但还是出现同样的验证错误……看来验证模式被忽略了!!!

有谁知道我该怎么做才能使事情正常进行?(购买有效证书将是我的最后一次尝试,因为目前它们对我的预算来说相当昂贵......)

4

2 回答 2

1

我只会使用自签名证书,使用代码将其“部署”到您的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);
    }

使用类似的东西,只需将 SettingFetcher 替换为RoleEnvironment.GetConfigurationSettingValue或其他任何东西来获取指纹。

于 2013-02-26T17:34:28.820 回答
0

我设法通过将“certificateValidationMode”添加到 STS web.config 来实现它。

于 2013-02-27T13:10:45.213 回答