Проверка X509Certificate2 на веб-сервисе

m разработка веб-службы WCF, которая проверяет, является ли сертификат в подписи XML действительным. XML подписан квалифицированным и действительным сертификатом X509. Пока я работаю в среде разработки Visual Studio, методы X509Certificate2.Verify () и X509Chain.Build () возвращают TRUE. Но когда я публикую свой сервис под IIS, эти методы возвращают FALSE. Что я делаю не так или чего не хватает? Вот мой проверочный код:

    public static void VerifyXml(XmlDocument xDoc)
    {
        // Create a new SignedXml object and pass it
        // the XML document class.
        SignedXml signedXml = new SignedXml(xDoc);

        // Find the "Signature" node and create a new
        // XmlNodeList object.
        XmlNodeList nodeList = xDoc.GetElementsByTagName("Signature");

        // Load the first  node.  
        signedXml.LoadXml((XmlElement)nodeList[0]);

        IEnumerable x509Data = signedXml.KeyInfo.Cast();
        KeyInfoX509Data info = x509Data.First();
        X509Certificate2 cert = info.Certificates[0] as X509Certificate2;

        bool certIsValid = cert.Verify();
        // Here I receive TRUE in development environment and FALSE under IIS
        if (!certIsValid)
            throw new X509Exception("Invalid certificate");

        bool chainIsValid = false;
        X509Chain chain = new X509Chain();
        chain.ChainPolicy.RevocationFlag = X509RevocationFlag.EntireChain;
        chain.ChainPolicy.RevocationMode = X509RevocationMode.Online;
        chain.ChainPolicy.UrlRetrievalTimeout = new TimeSpan(0, 1, 0);
        chain.ChainPolicy.VerificationFlags = X509VerificationFlags.NoFlag;
        chainIsValid = chain.Build(cert);
        // Here I also receive TRUE in development environment and FALSE under IIS
        if (!chainIsValid)
            throw new X509Exception("Chain is invalid");

        // Check the signature
        bool signatureOK = signedXml.CheckSignature(cert, false);
        if (!signatureOK)
            throw new X509Exception("Signature is invalid");
     }

Есть идеи? Спасибо

Ответы на вопрос(1)

Ваш ответ на вопрос