none
Exibir a Janela de certificados digitais RRS feed

  • Pergunta

  • Bom dia !

    Gostaria de saber se existe a possibilidade de se abrir a janela com a lista de certificados digitais em uma aplicação Web.

    Tenho a um novo request devido a uma auditoria/certificação onde será necessário em um form especifico pegar o certificado digital do usúario validar/assinar para compor as informações.

    Para aplicações desktop aindei pesquisando e descobri que na classe "X509Certificate2UI" temos recursos para isto, porem não encontrei nada semelhante para aplicação Web.

    Alguem pode me dizer se o que "desejo" é possível, ou estaria infringido as regras de segurança impostas pelos browser ? ou ... ?

    Grato

     

     


    Rogerio
    sexta-feira, 16 de julho de 2010 12:33

Respostas

  • Olá Rogério,

    se você tem acesso total ao servidor e já possui algo que captura os certificados via Forms.

    Recomendo que você faça um Serviço Windows rodando com uma conta ADM.

    Que pegue esses certificados, e disponibilize no seu banco de dados.

    Parece que essa Thread está bem longa, e pode ser que essa solução lhe traga algum resultado.


    Att, Lucio Rogerio


    Espero ter ajudado, se ajudei, por favor "Vote como Útil", e se resolvi seu problema, clique em "Propor como Resposta".

    sexta-feira, 26 de junho de 2015 02:12

Todas as Respostas

  • Rogerio,

         Tenta este:

         http://www.dotnetspider.com/resources/31709-Get-Client-Certificate.aspx

     

     

    sábado, 17 de julho de 2010 14:48
  • Ola Ricardo,

    Fiz varios testes aqui é baseado no link que você passou, porem enquanto estou rodando a aplicação na minha máquina (localHost) a janela de certificados abre e então, posso escolher o qual desejo e pegar as suas informações, porem quando publico a aplicação da erro ("The current session is not interactive").

    Ainda não sei como resolver-lo....

     


    Rogerio
    terça-feira, 20 de julho de 2010 11:22
  • Rogerio,

        Infelizmente eu também não sabia. Mas ao executar no IIS (ao invés do Cassini ou Developer WebServer) ocorre uma falha de segurança. Estive pesquisando e encontrei 3 alternativas citadas em foruns para resolver este problema:

        1) Criar um activex ou clickonce que monta a lista. Aqui citam isso:

             http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/7fe93f58-bfa6-4e54-ba0a-b07274bf215b

        2) Postar os dados do certificado e recuperar depois (acho que este foi o meio do outro artigo):

             http://codeplex.codeplex.com/Thread/View.aspx?ThreadId=10034

        3) Aqui tem um exemplo chamando um webservice:

             http://www.kerrywong.com/2006/12/01/using-x509-certificate-with-web-service-in-aspnet/

        Vou tentar fazer um teste se você me disser que nenhuma destas deu certo...

       

     

    terça-feira, 20 de julho de 2010 19:51
  • Ricardo,

    Fiz mais alguns teste criando um WebService (código anexo) e quando rodo o mesmo como Localhost e IIS da para ver bem a diferença de resultados.

    Considerações:

    Eu só consegui ler os certificados na máquina do cliente quando o projeto foi setado no IIS como Https, isto forçar a pessoa escolher um certificado que esta instalado na máquina assim que o site é chamado/carregado.

    Se você escolher um certificado então consegue ler o mesmo (vide código opção 0,3,6), porem se o usuário cancelar a opção de escolha, não código ler mais nada, até então um comportamento normal, porem gostaria de poder "forçar esta escolha" ... abrir a janela com os certificados até que o usuário escolha um certificado.

    Outro teste que fiz foi criar um "Smart Cliente" para conseguir o que quero, porem quando estou com a aplicação rodando no IIS tenho um problema com segurança na máquina local (maq. do usuário) e para contornar isto tivemos que alterar algumas propriedades do framework instalado na máquina do usuário e então a janela com os certificados é exibida sem problemas. Mas para mim esta solução não é a melhor.

    Se tiver mais alguma sugestão, é só mandar.

    Segue o web service que criei para testes.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Services;
    using System.Text;
    using System.Collections;
    using System.Security;
    using System.Security.Cryptography;
    using System.Security.Cryptography.X509Certificates;
    using System.Security.Cryptography.Pkcs;
    using System.Security.Cryptography.Xml;
    using System.IO;
    using System.Security.Permissions;
    using System.Net;
    
    namespace BusinessApplication1.Web
    {
    
      [WebService(Namespace = "http://tempuri.org/")]
      [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
      [System.ComponentModel.ToolboxItem(false)]
     
      public class WebService1 : System.Web.Services.WebService
      {
    
        [WebMethod]
        public string Teste()
        {
          try
          {
            /*--------------------------------------------------------------------------------------------
            Opção: 0
            --------------------------------------------------------------------------------------------*/
            string ret0 = string.Empty;
            try
            {          
              X509Certificate2 cert = new X509Certificate2(Context.Request.ClientCertificate.Certificate);
              ret0 = cert.SerialNumber;
            }
            catch (Exception e) { ret0 = String.Format("ERRO: {0}", e.Message); }
            ret0 = "(0) Retorno: " + ret0 + " :" + System.DateTime.Now.ToString();
    
            /*--------------------------------------------------------------------------------------------
            Opção: 1
            --------------------------------------------------------------------------------------------*/
            string ret1 = string.Empty;
            try
            {
            X509Store st = new X509Store(StoreLocation.CurrentUser);
            st.Open(OpenFlags.ReadOnly);        
            foreach (X509Certificate2 c in st.Certificates)
            {
              ret1 += c.Subject.ToString();
            }
            }
            catch (Exception e) { ret1 = String.Format("ERRO: {0}", e.Message); }
            ret1 = "(1) Retorno: " + ret1 + " :" + System.DateTime.Now.ToString();
    
            /*--------------------------------------------------------------------------------------------
            Opção: 2
            --------------------------------------------------------------------------------------------*/
            string ret2 = string.Empty;
            try{
    					X509Store Lista = new X509Store();
    					Lista.Open(OpenFlags.IncludeArchived);
    					for (int Contador = 0; Contador < Lista.Certificates.Count; Contador++)
    					{
    						X509Certificate2 Certificado = Lista.Certificates[Contador];
    						ret2 = Certificado.ToString();
    						string Dados = Certificado.Subject;
    						ret2 += Dados + " "; 
    						}
            }
            catch (Exception e) { ret2 = String.Format("ERRO: {0}", e.Message); }
            ret2 = "(2) Retorno: " + ret2 + " :" + System.DateTime.Now.ToString();
    
            /*--------------------------------------------------------------------------------------------
            Opção: 3
            --------------------------------------------------------------------------------------------*/
            string ret3;
            try
            {
              HttpClientCertificate certe = Context.Request.ClientCertificate;
              if (certe.IsPresent) 
                ret3 = certe.SerialNumber;
              else
                ret3 = "No certificate was found.";
            }
            catch (Exception e) { ret3 = String.Format("ERRO: {0}", e.Message); }
            ret3 = "(3) Retorno: " + ret3 + " :" + System.DateTime.Now.ToString();
    
    
            /*--------------------------------------------------------------------------------------------
            Opção: 4
            --------------------------------------------------------------------------------------------*/
            string ret4 = string.Empty;
            // The path to the certificate.
            // Load the certificate into an X509Certificate object.
            try
            {
              string Certificate = @"C:\Temp\certificado.cer.pfx";
              X509Certificate cert1 = X509Certificate.CreateFromCertFile(Certificate);
              ret4 = cert1.Subject;
            }
            catch (Exception e) { ret4 = String.Format("ERRO: {0}", e.Message); }        
            ret4 = "(4) Retorno: " + ret4 + " :" + System.DateTime.Now.ToString();
    
    
            /*--------------------------------------------------------------------------------------------
            Opção: 5
            --------------------------------------------------------------------------------------------*/
            string ret5 = string.Empty;
            try {
            HttpContext httpcontext;
            httpcontext = HttpContext.Current;
            HttpClientCertificate c1 = httpcontext.Request.ClientCertificate;
            ret5 = c1.SerialNumber;
            }
            catch (Exception e) { ret5 = String.Format("ERRO: {0}", e.Message); }
            ret5 = "(5) Retorno: " + ret5 + " :" + System.DateTime.Now.ToString();
    
            /*--------------------------------------------------------------------------------------------
            Opção: 6
            --------------------------------------------------------------------------------------------*/
            string ret6 = string.Empty;
            try {
              
              String s = HttpContext.Current.Request.ClientCertificate.Issuer;
              //da permissão para efetuar qq operacao no windows certificates store
              StorePermission sp = new StorePermission(StorePermissionFlags.AllFlags);
              //carrega todos certificados pessoais, para o usuario logado
              X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
              //abre o store
              store.Open(OpenFlags.ReadWrite);
              //para cada certificado existente
              ret6 = s;
              foreach (X509Certificate2 certificado in store.Certificates)
              {
                ret6 += certificado.SerialNumber + " ";
              }
              store.Close();
            }
            catch (Exception e) { ret6 = String.Format("ERRO: {0}", e.Message); }
            ret6 = "(6) Retorno: " + ret6 + " :" + System.DateTime.Now.ToString();
    
            /*--------------------------------------------------------------------------------------------
            Opção: 7
            --------------------------------------------------------------------------------------------*/
            string ret7 = string.Empty;
            try
            {
              X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
              store.Open(OpenFlags.ReadOnly);
    
              X509Certificate2Collection certs = store.Certificates.Find(
                X509FindType.FindByIssuerDistinguishedName
                , "ibramed-ZEUS-CA"
                , false);
    
              certs = X509Certificate2UI.SelectFromCollection(
                store.Certificates
                , "Select Certificate", "Select the certificate to use for authentication."
                , X509SelectionFlag.MultiSelection);
    
              foreach (X509Certificate2 x509 in certs)
              {
                ret7 += string.Format("Simple Name: {0}{1}", x509.SerialNumber, Environment.NewLine);
                X509Certificate2UI.DisplayCertificate(x509);
                x509.Reset();
              }
              store.Close();
            }
            catch (Exception e) { ret7 = String.Format("ERRO: {0}", e.Message); }
            ret7 = "(7) Retorno: " + ret7 + " :" + System.DateTime.Now.ToString();
         
            
            //Retornos
            return string.Concat(
              ret0,
              System.Environment.NewLine, System.Environment.NewLine,
              ret1,
              System.Environment.NewLine, System.Environment.NewLine,
              ret2,
              System.Environment.NewLine, System.Environment.NewLine,
              ret3,
              System.Environment.NewLine, System.Environment.NewLine,
              ret4,
              System.Environment.NewLine, System.Environment.NewLine,
              ret5,
              System.Environment.NewLine, System.Environment.NewLine,
              ret6,
              System.Environment.NewLine, System.Environment.NewLine,
              ret7
    
              ); 
          }
          catch (Exception e)
          {
            return string.Concat("Erro.: ", e.Message);
          }
        }
      }
    }
    
    

     

     


    Rogerio
    quarta-feira, 21 de julho de 2010 12:02
  • Rogério,

    Boa tarde.
    Você obteve alguma resposta com relação a selecionar um certificado digital no ASP .Net quando se utiliza o IIS?

     

    Estou neste mesmo dilema e sem solução.

     

    Obrigado,

     

    Sergio

    quinta-feira, 14 de outubro de 2010 20:52
  • Ola Sergio,

    Bom Dia,

    Até aqui o que o melhor que consegimos fazer para ler o certificado digital via browser (IE), foi usando o CAPICOM e javascript. Também não implentamos a solução só ficamos a nivel dos "testes".

    Este blog pode te ajudar  (http://bozhobg.wordpress.com/2009/04/16/how-to-create-a-digital-signing-solution-with-only-javascript/).

    Se te tiver alguma solução mais indicada por favor não deixe de compartilhar.

    Abraços,

     

     

     

     

     

     

     


    Rogério
    sexta-feira, 15 de outubro de 2010 11:45
  • Olá Rogério,


    Tudo bem?
    Desculpe a demora, estava implementando outras features do projeto e esta parte acabou ficando em stand by.


    Por enquanto eu ainda não achei uma solução interessante para isso.
    O máximo que tinha feito, foi tentar tratar um ActiveX para tal solução, até funcionou, mas também estou em fase de testes.

    Veja este link: http://www.codeproject.com/KB/cs/CreateActiveXDotNet.aspx

    Eu não gostaria de usar o CAPICOM, algo do próprio framework, mas senão houver solução o jeito será adotar isso.

    Vamos mantendo contato até acharmos uma solução para tal.

    Abraços,

    Sergio

    quinta-feira, 11 de novembro de 2010 19:40
  • Olá Sergio,

    Conseguiu progredir em alguma coisa, estou com o mesmo dilema aqui.

    Fábio Freitas

    quarta-feira, 29 de dezembro de 2010 20:11
  • Olá Sergio e Rogerio,

    Vocês conseguiram algum sucesso.

    Desde já agradeço o retorno.

    abcs.

    sexta-feira, 18 de março de 2011 17:54
  • Ola Fabio,

    Não precisei mais trabalhar este assunto, portando não evolui com o mesmo.

    Mas se tiver alguma atualização eu aviso.

    Abraços

    quarta-feira, 23 de março de 2011 14:15
  • Olá Rogerio,

    Obrigado pelo retorno.

    No meu caso não tem jeito, tenho que conseguir esta funcionalidade.

    Quando eu tiver sucesso lhe passo.

    Abcs.


    quinta-feira, 24 de março de 2011 12:48
  • Fábio e Rogério,

    Eu não consegui a finalização do código, pois não trabalhei mais no projeto.
    Porém, eu criei um ActiveX seguindo este link:

    http://www.codeproject.com/KB/cs/CreateActiveXDotNet.aspx

    Dentro dele, eu efetuei a chamada do formulário de certificados digitais e após isso eu não implementei, mas vc pode guardar a chave do mesmo, guardar o certificado (formato binário) ou da forma que vc quiser dentro de um banco de dados.

    Fica limitado, pois é ActiveX; mas foi o único meio que achei para o mesmo.
    Eu não fiz um instalador do ActiveX, eu efetuei na mão a instalação.

    Creio que poderá lhe ajudar.

    Um abraço,

    Sergio Gonçalves

    segunda-feira, 28 de março de 2011 22:14
  • Fala Sergio,

    Obrigado pela resposta, irei tentar novamente com ActiveX, mas se não me falhe a memória, tive problemas de permissão com ele também.

    Já até mandei um email para o pessoal da prefeitura, rs..rs.., pois eles usam a mesma linguagem, perguntando se ele usam alguma biblioteca para esse processo, porém ele disseram que é uma funcionalidade nativa do .NET.

    Perguntei para algumas pessoas na faculdade e nada, o professor até sugeriu entrar em contato com a Microsoft.

    Abcs.

     

    terça-feira, 29 de março de 2011 11:42
  • Bom dia,

    Fábio, você checou a possibilidade de algum componente pago fazer essa intervenção?

    Talvez pelo tempo que você demore, seja mais viável.
    De cabeça não me recordo de nenhum, caso eu encontre; lhe comunico.

    Abraços,

    Sergio Gonçalves

    terça-feira, 29 de março de 2011 12:29
  • Olá Sergio,

    Estou começando a pensar nisso, pois minhas esperanças estão acabando e meu prazo também.

    Ainda acho estranho não ser tão fácil achar uma solução no momento em que só se se fala em NFe e outras coisas do tipo.

    Vou procurar mais um pouco...

    Abcs.

    quinta-feira, 28 de abril de 2011 16:57
  • Estou precisando mtoo para uma solução desse tipo, buscar o certificado do lado cliente ao invés do servidor

    fiz o teste com o webservice que o Rogério disponibilizou para testar, porem ele roda do lado servidor tmb

    :S

     

    se alguem tiver uma solução ajudaria bastante?


    e se puder disponibilizar o código para consulta seria mto bom

     

    Obrigado

    sexta-feira, 29 de abril de 2011 16:00
  • algum resultado?????
    segunda-feira, 2 de maio de 2011 14:25
  • Olá Daniel,

    Procurei no final de semana e não consegui nada.

    Abcs.

    segunda-feira, 2 de maio de 2011 15:02
  • Estou pesquisando bastante mas nenhum resultado, com os materiais postados conseguimos pegar os certificados do servidor, imagino que usando esse codigo em forma de plugin ou activex poss funcionar no lado cliente Obs:(O Problema eh que nao sei mexer com nenhum desses dois recursos)

     

    Abraço, vou continuar tentando

    qualquer novidade eu posto

    terça-feira, 3 de maio de 2011 12:34
  • Olá Daniel,

    Já tentei com activex e acabei esbarrando em questões de segurança.

    Abcs.

    terça-feira, 3 de maio de 2011 16:48
  • ja tentei criar um acrivex mas nao conheço mto dessa tecnologia por isso nao consegui fazer nd, porem pelo menos no meu caso a questao de segurança nao afetaria mesmo que eu tenha que tirar as restrições de segurança do IE para mim ja resolveria

    AbraçO


    Analista Desenvolvedor
    quarta-feira, 4 de maio de 2011 11:31
  • Olá Daniel,

    Segue então um exemplo:

    http://www.15seconds.com/issue/030610.htm

    Abcs.

    quinta-feira, 5 de maio de 2011 20:49
  • Fabio ajudou mto o que vc indicou, seria realmente o que preciso

    porem estou tendo dificuldades em chamar a dll no html, fiz do jeito que o cara mostra mas não da certo, a dll esta na mesma pasta que a pagina html que criei para chamar se vc puder me falar como ficara a tag <Object> isso quando a dll esta local para usa-la como teste e depois quando estiver na web como devera ficar

     

    se souber me explicar agradeço

     

    Obrigado


    Analista Desenvolvedor
    sexta-feira, 6 de maio de 2011 12:43
  • Conseguiu Daniel?
    segunda-feira, 4 de julho de 2011 20:15
  • Então Fabio Consegui, em partes, porque criei um activex até ai blz, só não estou conseguindo devolver o valor do certificado para a pagina, estou pensando em gravar no banco sei la

     

    att.


    Analista Desenvolvedor
    terça-feira, 5 de julho de 2011 12:51
  • Bom dia Daniel,

    Você precisou alterar alguma coisa nas permissões do navegador para que o seu activeX funcionasse?

     

    terça-feira, 5 de julho de 2011 13:01
  • Na Realidade eu tive que dar algumas permissões de framework, no caspol do framework


    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>caspol.exe -machine -quiet -addgroup Trusted_Zone -site 192.168.1.107 FullTrust test "teste"


    Analista Desenvolvedor
    terça-feira, 5 de julho de 2011 13:25
  • Mas teve que fazer isso em todas as máquinas que acessam a aplicação?

    terça-feira, 5 de julho de 2011 17:48
  • para as maquinas que irão acessar vc precisa rodar esse comando direcionado ao ip do servidor onde esta a aplicação

     


    Analista Desenvolvedor
    quarta-feira, 6 de julho de 2011 18:27
  • Mesmo que o servidor esteja em um data center? pois ainda não consegui, mesmo com essa configuração.
    quinta-feira, 7 de julho de 2011 18:46
  • ainda não testei dessa forma, na rede local funcionou porem como outros requisitos ainda não consegui fazer rodar ainda não fiz o teste na web

    att.


    Analista Desenvolvedor
    sexta-feira, 8 de julho de 2011 11:22
  • Valeu Daniel, vou procurar mais alguma coisa ou quem sabe alguem aqui no forum ainda me dá uma luz.
    segunda-feira, 11 de julho de 2011 16:02
  • Opa tranquilo, qualquer novidade posta ai pra esclarecer

    att.


    Analista Desenvolvedor
    terça-feira, 12 de julho de 2011 11:43
  • Bom dia Daniel,

    Esse seu metodo de configurar cada máquina é configurando as permissões pode ser um solução paliativa, mas longe do ideal, se tratando de uma intranet beleza, mas extranet complica um pouco, as questões são:

    Necessidamos de alguma configuração no servidor.
    Temos que comprar algum framework que faça isso.
    Os sites governamentais utilizam alguma linguagem que permiti essa integração. O da nota Carioca utiliza dot.net.

    Abcs.

    terça-feira, 12 de julho de 2011 12:11
  • Bom Tarde Fabio tem q ser algo como o webservice do governo

    https://homologacao.nfe.fazenda.sp.gov.br/nfeweb/services/NfeCancelamento2.asmx

    atraves de webservice conseguiram fazer o que preciso, pelo menos o que eu preciso é exibir os certificados instalados no browser, se for para exibir os certificados instalados no iis creio que seja mais facil

    att.


    Analista Desenvolvedor
    terça-feira, 12 de julho de 2011 17:07
  • Olá Fábio e Daniel.

    Estou com o mesmo problema, tenho que assinar um documento e preciso do certificado que está instalado no browser do cliente.

    Já pesquisei e não encontrei nenhuma solução viável. Como disse o Fábio, tenho que levar em conta algumas questões extranet nao controláveis.

    Já tentei por CAPICOM e também não consegui.

    Mais algumas idéias ou alguns passos a percorrer para que se obtenha um resultado satisfatório?

     

    Att, Jackfaria.

    quinta-feira, 21 de julho de 2011 19:37
  • Olá Jackfaria,

    Bem vindo ao time..rs.. ainda não encontrei nada, se achar terei o maior prazer em compartilhar.

    Abcs.

    quinta-feira, 21 de julho de 2011 19:48
  • Igualmente galera, vi que aparentemente tem como fazer um webservice para isso, mais nem manjo mto dessa tecnologia

     

    att.


    Analista Desenvolvedor
    quinta-feira, 21 de julho de 2011 23:35
  • Olá Fábio e Daniel, algum de vocês já estão conseguindo pegar o certificado em javascript?

    Sabe quando voce tenta uma coisa sabendo que no final nao vai dar certo e está indo pelo caminho errado? auhahuahuauha Estou com essa sensação!

    att.

    sexta-feira, 22 de julho de 2011 12:13
  • Olá, vi que existe uma opção no IIS no servidor que posso exigir que o cliente informe seu certificado digital, porém com o IE8 esta me apresentando um erro, já até abri um novo post para vê se alguém me ajuda.
    http://social.msdn.microsoft.com/Forums/pt-BR/webgeralpt/thread/554b9761-214c-4039-941b-61667afef0b3, sinto que estou chegando perto.

    segunda-feira, 25 de julho de 2011 17:45
  • Se para voce ja for util que o certificado esteja instalado no iis, certificado gerado de um servidor eu tenho um manual ensinando passo a passo como se faz, se quiser poste seu email que envio

    att.


    Analista Desenvolvedor
    terça-feira, 26 de julho de 2011 11:16
  • terça-feira, 26 de julho de 2011 17:30
  • Arquivo Enviado


    Analista Desenvolvedor
    terça-feira, 26 de julho de 2011 17:35
  • jackfaria,

    Aqui na empresa agente contratou uma empresa de fora, eles desenvolveram em Java uma "applet", então eu setei esta applet na minha aplicação, eu consigo abrir a lista de todos os certificados instalados no cliente, ele seleciona com qual certificado ele quer assinar e pronto.

    terça-feira, 26 de julho de 2011 18:09
  • mais ele exibe quais certificados, os intalados no iis ou os instalados no browser?

    att.


    Analista Desenvolvedor
    quarta-feira, 27 de julho de 2011 12:22
  • Exibe os certificados instalados na maquina do cliente... no browser.

    Na verdade todo o processo de assinatura eu fiz com este fornecedor.... eu tenho 3 campos hidden no meu <form>... o 1º eu  jogo meu xml sem etar assinado... O retorno vem nos outros 2 campos hidden já com o xml assinado.. ai eu pego faço o decode e sobrescrevo no meu diretorio...

    quarta-feira, 27 de julho de 2011 14:12
  • entedi, essa parte de assinar o xml eu ja consegui fazer, o que esta dando problema é em pegar o certificado do browser, se eu instalar o certificado no iis da maquina até consigo

    vc poderia disponibilizar essa applet para que eu possa tentar escreve-la em C#

    Obrigado


    Analista Desenvolvedor
    quarta-feira, 27 de julho de 2011 14:37
  • Sem chance, como é um produto que eles vendem não é legal sair passando assim.... alem do que esta applet chama um webservice deles e eu passo como parametro a minha senha....

    Mas é um arquivo .jar... acho q vc nao vai conseguir decompilar.

    O nome da empresa é autofax.

    quarta-feira, 27 de julho de 2011 15:04
  • Tranquilo, axei q tivesse o código, e é possivel descompilar um arquivo jar sim, só abrilo pelo winrar

    vou tentar entrar em contato com o pessoal, vlw

    Att.


    Analista Desenvolvedor
    quarta-feira, 27 de julho de 2011 16:36
  • Realmente como o Leandro falou, que essa applet chama um webservice, acho que o caminho será por webservice, agora como que é o porém da questão.

    Vamos ver o que consigo fazer com webservice por aqui, se conseguir alguma coisa posto aqui.

    Att, jackfaria

    quinta-feira, 28 de julho de 2011 18:42
  • Estive tentando algo com webservice porem por não conhecer mto bem a tecnologia não consegui nenhum resultado

    se conseguir algo, ajudaria bastante

    att.


    Analista Desenvolvedor
    sexta-feira, 29 de julho de 2011 12:22
  • Alguém deve exito no assunto. Ainda estou penando.

    quinta-feira, 4 de agosto de 2011 19:34
  • Ainda estou na luta...

    Uma dica ai pra quem ainda nao tem nada...

    Procura saber sobre WebService com WSE

    quinta-feira, 18 de agosto de 2011 19:03
  • Ainda não consegui nada, se nesta semana não achar nada terei que buscar infelizmente alguma ferramenta de terceiros.
    segunda-feira, 29 de agosto de 2011 19:10
  • Bom, voltei a trabalhar no assunto, caso alguém tenha alguma novidade.
    segunda-feira, 19 de setembro de 2011 17:56
  • Aqui solucionamos o problema, o esquema para proteção por certificado digital é configurar o Active Directory no servidor para trabalhar com certificados digitais, e estudar como funcionar chaves publicas e privadas e dessa forma configurar o servidor a exigir o certificado para acessar a pagina

    Abraço


    Analista Desenvolvedor
    quarta-feira, 21 de setembro de 2011 18:26
  • Fala Daniel, que bom que você conseguiu, Tem algum material para servir de base?

    Um abraço

    quinta-feira, 22 de setembro de 2011 18:18
  • Material em si eu não tenho não, mais o que vc precisa na realidade

    o que eu fiz foi usar SSL no site e tornalo HTTPS

    pesquisa sobre SSL talvez solucione seu problema

    fala ae o q vc precisa derrepente eu posso ajudar

    Abraço


    Analista Desenvolvedor
    sexta-feira, 23 de setembro de 2011 14:02
  • Olá Daniel,

    Meu site já roda em um https.

    Um abraço.

    segunda-feira, 10 de outubro de 2011 18:27
  • jackfaria,
    Aqui na empresa agente contratou uma empresa de fora, eles desenvolveram em Java uma "applet", então eu setei esta applet na minha aplicação, eu consigo abrir a lista de todos os certificados instalados no cliente, ele seleciona com qual certificado ele quer assinar e pronto.

    Leandro,

     

    tentei mandar PM mas não achei aqui no fórum da msdn.

    Gostaria de entrar em contato com essa empresa que fez esse applet, se puder entrar em contato comigo pelo fredy [at] pontosistemas [dot] com [dot] br eu agradeceria.

     

    Obrigado,

     

    Fredy;

    sexta-feira, 28 de outubro de 2011 17:31
  • Olá, Também gostaria de conhecer esta solução. Favor enviar email para fabio.santos.freitas@gmail.com. Desde já agradeço
    segunda-feira, 7 de novembro de 2011 12:00
  • Alguem conseguiu o contato?
    domingo, 20 de novembro de 2011 00:23
  • Boa Tarde Daniel, já consegui acessar o certificado , fazer tudo.. só que quando utilizo esse certificado para transmitir a receita não aceita. 

     

    Estou disposto a estar te pagando para implantar o que estiver faltando em meu código.

    meu e-mail  : luisnet10@hotmail.com 


    luisnet10
    segunda-feira, 28 de novembro de 2011 19:02
  •  

    Fabio, utilizando apenas

     X509Certificate2 cert = new X509Certificate2(Request.ClientCertificate.Certificate);

    E deixando sua pagina como https e na configuração do iis exigir o certificado, com o codigo acima você já terá acesso ao certificado do cliente.

    O problema, quando utilizo esse certificado o webservice da nfe não aceita.

    Estou disposto a pagar para quem conseguir solucionar este problema.


    luisnet10
    segunda-feira, 28 de novembro de 2011 19:06
  • Olá Luis,

    Fiz um WebService e configurei o ISS para exigir o certificado, porém apresenta o erro abaixo no IE8, só 7 funciona, você criou uma aplicação ou um WebService?
    Secure Channel Client Authentication Required

     

    quarta-feira, 30 de novembro de 2011 11:26
  • Pessoal o certificado que sera usado para se comunicar com a sefaz deve estar instalado no servidor se não eh impossivel fazer a comunicação, a ssl é pra validar o certificado cliente com o certifcado servidor, mas o usado para trasmitir sera o do servidor
    Analista Desenvolvedor
    quinta-feira, 15 de dezembro de 2011 13:54
  • Boa tarde, Bom depois de mais de um ano tentando, desisti de fazer a assinatura digital do XML via browser, irei tocar o projeto gerando o XML, depois pensarei na assinatura ou não, por sorte aonde preciso transmitir o arquivo o usuário pode entrar no site e importar sem assinar, sem utilizar WebService. Desde que comecei a trabalhar com este assunto, poucas pessoas falaram que conseguiram, caso alguem que participou do post tenha conseguido, ficaria muito grato.
    sexta-feira, 13 de janeiro de 2012 17:38
  • Olá pessoal! Alguns desistindo da pesquisa e outros começando, estou no segundo caso! Tenho a impressão de que minha tarefa não será fácil, já conseguimos aqui na empresa fazer a assinatura em sistemas desktop, certificado A1 e A3, com o mesmo código em C# .NET O problema é fazer isso via browser, já tentamos com a CAPICOM e Javascript, conseguimos ler o certificado mas paramos por ai, nos falta conhecimento pra realizar a assinatura do XML usando CAPICOM e Javascript, se alguém puder nos ajudar nessa parte ou indicar algum outro meio de realizar essa façanha ficaremos muito gratos. Em último caso, estamos dispostos a negociar um valor caso alguém tenha uma solução pronta.
    quinta-feira, 26 de janeiro de 2012 20:27
  • Olá a todos....

    também estou agora com problema semelhante ao de vc´s, apesar de alguns desistirem..

    Preciso criar uma assinatura digital através de um certificado digital, tudo através do browser sem cliente, porém para certificados padrão A3(tokens).

    O grande problema é saber como isso fica armazenado no browser, para poder utilizá-lo para gerar a assinatura digital.

    Alguém tem uma idéia?

    Abraço e boa sorte a todos nós..

    segunda-feira, 19 de março de 2012 15:13
  • Ola Marcio

    não sei como funciona os certificados do tipo A3, porem o A1 vc consegue importa-los em uma store do proprio navegador


    Analista Desenvolvedor

    terça-feira, 3 de abril de 2012 11:59
  • Mais de 3 anos depois...

    Alguém conseguiu alguma solução? Sem instalar o certificado do cliente no servidor, pegando o certificado do cliente via browser. Hoje existem várias aplicações para desktop com código fonte, porém não encontrei nada totalmente Web.

    Se alguém puder me ajudar, agradeceria muito.

    Obrigado!

    terça-feira, 23 de junho de 2015 14:28
  • Ola Tonny,

    Eu não consegui solucionar este problema.

    Abraços


    Rogério

    sexta-feira, 26 de junho de 2015 00:55
  • Rogério,

    estou querendo implementar uma assinatura digital também, criei um tópico, se puder da uma olhada, ou qualquer outra pessoa que esteja disposta a ajudar agradeço muito, 

    https://social.msdn.microsoft.com/Forums/pt-BR/03f13d36-366e-479d-b76d-f3f1735f3361/servidor-no-mostra-a-janela-de-senha-do-certificado?forum=webgeralpt

    terça-feira, 20 de outubro de 2015 10:31
  • Galera, boa tarde!

    Vi q esta Thread  esta muito longa e isso é desanimador kkkkkkkkkkk

    Estou precisando criar uma área restrita onde o usuário vai acessar só após informar o certificado digital A3, e esse mesmo ser válidado.

    Ai esta o meu problema, não sei como obter os dados do certificado que o usuário inseriu na usb do seu pc, alguém tem alguma ideia para solucionar o meu problema nesse cenário.


    Posso não concordar com o que vc disse, mas lutarei até a morte pelo seu direito de dizer...

    sexta-feira, 18 de dezembro de 2015 20:16