Certificado Digital A3 ASP .Net MVC

854 views
Skip to first unread message

Ramsés França

unread,
Dec 29, 2016, 12:55:59 PM12/29/16
to .Net Architects
Boa tarde pessoal,

Gostaria de saber se alguém já trabalhou com certificado A3 no IIS? No ambiente de desenvolvimento funciona normalmente, mas quando eu publico a APP no IIS o mesmo não funciona.

Qualquer ajuda é bem vinda, agradeço.

Att,

Ramsés F.

Código

PdfReader leitorPDF;

this.RetornarCaminhoArquivo(arquivo, localArquivoOrigem, localArquivoSaida, out leitorPDF, out localServidor);

stamper = PdfStamper.CreateSignature(leitorPDF, new FileStream(localServidor, FileMode.Create, FileAccess.Write), '\0', null, true);
sap = stamper.SignatureAppearance;
store = new X509Store(StoreLocation.CurrentUser);

store.Open(OpenFlags.ReadOnly);

// Coleção de Certificados para a seleção.
var colecaoCertificados = store.Certificates
.Find(X509FindType.FindByTimeValid, DateTime.Now, false)
.Find(X509FindType.FindByKeyUsage, X509KeyUsageFlags.DigitalSignature, false);

if (colecaoCertificados == null && colecaoCertificados.Count <= 0)
{
throw new Exception("Nenhum certificado digital foi selecionado ou o certificado selecionado está com problemas.");
}

var certificado = colecaoCertificados[0];

Org.BouncyCastle.X509.X509CertificateParser cp = new Org.BouncyCastle.X509.X509CertificateParser();
Org.BouncyCastle.X509.X509Certificate[] chain = new Org.BouncyCastle.X509.X509Certificate[]
{
cp.ReadCertificate(certificado.RawData)
};

MakeSignature.SignDetached(sap, new X509Certificate2Signature(certificado, "SHA-1"), chain, null, null, null, 0, CryptoStandard.CMS);

stamper.Close();

Vitor Costa

unread,
Dec 29, 2016, 2:12:49 PM12/29/16
to .Net Architects
Opa Ramsés,

Olha, não sei se seria o teu problema, mas você deu permissão de leitura deste certificado para sua aplicação no IIS?


Abraço,
--
Vitor de Barros Costa

--
Você recebeu esta mensagem porque faz parte do grupo .Net Architects hospedado no Google Groups.
Para postar envie uma mensagem para dotnetar...@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitec...@googlegroups.com
Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br
---
Você recebeu essa mensagem porque está inscrito no grupo ".Net Architects" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para dotnetarchitec...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.

Patrick José

unread,
Dec 29, 2016, 2:47:05 PM12/29/16
to dotnetar...@googlegroups.com
Oi,

Provavelmente o problema esta relacionado com o usuário que esta executando o serviço IIS.

No seu ambiente de desenvolvimento você utiliza o visual studio + servidor web do vs?


No trecho de código "store = new X509Store(StoreLocation.CurrentUser);" você esta acessando o repositório do usuário corrente.
Qual o mesmo e executado no IIS, o mesmo roda por padrão no contexto do "network services", logo você não tem acesso ao repositório de certificados.
Dá uma olhada no recurso IIS Impersonation.

Se possível descreva o seu ambiente.

Para postar envie uma mensagem para dotnetarchitects@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitects+unsubscribe@googlegroups.com

Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br
---
Você recebeu essa mensagem porque está inscrito no grupo ".Net Architects" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para dotnetarchitects+unsubscribe@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.

--
Você recebeu esta mensagem porque faz parte do grupo .Net Architects hospedado no Google Groups.
Para postar envie uma mensagem para dotnetarchitects@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitects+unsubscribe@googlegroups.com

Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br
---
Você recebeu essa mensagem porque está inscrito no grupo ".Net Architects" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para dotnetarchitects+unsubscribe@googlegroups.com.

Ramsés França

unread,
Jan 2, 2017, 8:03:44 AM1/2/17
to dotnetar...@googlegroups.com

Bom dia,

 

Vitor e Patrick, agradeço a ajuda.


Vitor, eu já tinha visto essa questão da permissão de leitura de um certificado no IIS.

 

Patrick, no ambiente de desenvolvimento eu estou utilizando o Visual Studio + IIS Express que o Visual Studio levanta quando estamos desenvolvendo com o mesmo. Nesse ambiente funciona normalmente, mas no ambiente de produção em um servidor com IIS, a aplicação não consegue localizar o certificado.

 

Descrevendo meu ambiente:

 

Uma aplicação WEB (ASP .NET MVC 4) que deve receber uma arquivo ".pdf" e localiza o certificado (A3) do usuário "Smart Card" ou "Token" inserido na USB (máquina essa do usuário) e assinar o documento com esse certificado.


Atenciosamente,

Ramsés França dos Prazeres

Celular: (81) 99183-8098 ou (81) 98850-8320
ramsesf...@gmail.com ou ramses...@hotmail.com 

Johann

unread,
Jan 2, 2017, 11:24:02 AM1/2/17
to .Net Architects
Ramsés, boa tarde!

Esse certificado A3 que vc está usando possui senha de proteção? Eu falo daquela tela CertiSign que pede o PIN do certificado quando o usuário acessa algum site que o exige, geralmente os do governo.

Se sim, como vc passa a senha do certificado pra ele?


Obrigado,
Johann W. Josefy
Para postar envie uma mensagem para dotnetar...@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitec...@googlegroups.com

Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br
---
Você recebeu essa mensagem porque está inscrito no grupo ".Net Architects" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para dotnetarchitec...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.

--
Você recebeu esta mensagem porque faz parte do grupo .Net Architects hospedado no Google Groups.
Para postar envie uma mensagem para dotnetar...@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitec...@googlegroups.com

Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br
---
Você recebeu essa mensagem porque está inscrito no grupo ".Net Architects" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para dotnetarchitec...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.

--
Você recebeu esta mensagem porque faz parte do grupo .Net Architects hospedado no Google Groups.
Para postar envie uma mensagem para dotnetar...@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitec...@googlegroups.com

Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br
---
Você recebeu essa mensagem porque está inscrito no grupo ".Net Architects" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para dotnetarchitec...@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.

Ramsés França

unread,
Jan 2, 2017, 12:19:25 PM1/2/17
to dotnetar...@googlegroups.com
Boa tarde Johann ,

Ele pede sim (segue a imagem em anexo), mas só em dev, pq quando eu vou por aplicação no servidor a mesma não reconhece o Smart Card e dar erro por não conseguir achar nenhum certificado.

Para postar envie uma mensagem para dotnetarchitects@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitects+unsubscribe@googlegroups.com

Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br
---
Você recebeu essa mensagem porque está inscrito no grupo ".Net Architects" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para dotnetarchitects+unsubscribe@googlegroups.com.

Para mais opções, acesse https://groups.google.com/d/optout.
pin.jpg

Patrick José

unread,
Jan 2, 2017, 1:38:30 PM1/2/17
to dotnetar...@googlegroups.com

Tiago Alves

unread,
Jan 2, 2017, 1:59:08 PM1/2/17
to dotnetar...@googlegroups.com
Ramsés, 

o que está acontecendo é que você está tentando autenticar um documento no servidor sendo que o certificado (smart card) está no cliente. Funciona na máquina de desenvolvimento pois o servidor e cliente estão na mesma máquina.

Você vai precisar enviar os dados para o servidor, ou fazer uma autenticação no lado cliente. 

Abs
---------------------------------------------------
 Tiago Alves de Oliveira
 Engenheiro de Computação
 IEEE - Certified Biometrics Professional
 
 
 Cel:  (19) 99831-7857
-------------------------------------------------------
Reply all
Reply to author
Forward
0 new messages