none
Login com certificado digital RRS feed

  • Pergunta

  • Boa tarde pessoal.

    Estou desenvolvendo em C# um site que deve conter um login com certificado digital, devo utilizar os certificados tipo icp-brasil.

    Fiz uma pagina que quando rodo localmente ela abre o repositório do certificado do windows e consigo recuperar o certificado normalmente, o meu problema é quando eu coloco essa página no servidor, ai o repositório que abre é o do servidor e eu não consigo selecionar o meu certificado localmente, alguem tem um exemplo de como que é feito? ou sabe como que faz? 

     

    Assim eu consigo abrir os certificados da maquina aonde está rodando a página:

     

    X509Store store                        = new X509Store("MY", StoreLocation.CurrentUser);

                store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);

                X509Certificate2Collection collection = (X509Certificate2Collection)store.Certificates;

                X509Certificate2Collection collection1 = (X509Certificate2Collection)collection.Find(X509FindType.FindByTimeValid, DateTime.Now, false);

                X509Certificate2Collection collection2 = (X509Certificate2Collection)collection.Find(X509FindType.FindByKeyUsage, X509KeyUsageFlags.DigitalSignature, false);

                if (Nome == "")

                {

                    X509Certificate2Collection scollection = X509Certificate2UI.SelectFromCollection(collection2, "Certificado(s) Digital(is) disponível(is)", "Selecione o Certificado Digital para uso no aplicativo", X509SelectionFlag.SingleSelection);

                    if (scollection.Count == 0)

                    {

                        _X509Cert.Reset();

                    }

                    else

                    {

                        _X509Cert = scollection[0];                    

                    }

                }

                else

                {

                    X509Certificate2Collection scollection = (X509Certificate2Collection)collection2.Find(X509FindType.FindBySubjectDistinguishedName, Nome, false);

                    if (scollection.Count == 0)

                    {

                        _X509Cert.Reset();

                    }

                    else

                    {

                        _X509Cert = scollection[0];

                    }

                }

                store.Close();

                return _X509Cert;

     

    quinta-feira, 9 de setembro de 2010 18:08

Todas as Respostas

  • Renato, conseguiu resolver seu problema?

    Estou necessitando fazer o mesmo, porém estou esbarrando exatamente no mesmo problema.

     

    Att.

    Marcus Brisolara.

    segunda-feira, 23 de janeiro de 2012 16:46