Certificados Digitais em .NET – Parte 1
Certificados Digitais em .NET – Parte 3
Artigo no estilo: Curso
Neste artigo vamos nos concentrar na Geração de Certificados de Cliente completos, abordando a Cadeia de Certificação e como gerá-la. Também veremos como é o ciclo de vida de um Certificado Digital.
Desde 2001, existe legislação específica na Constituição Brasileira que permite a autenticação de comunicações e documentos eletrônicos por meio do uso de Certificados Digitais gerados sob a Autoridade Certificadora Brasileira.
Do mesmo modo, o conceito pode ser aplicado para fortalecer as comunicações de qualquer aplicação a custo zero ou estar em acordo com a legislação vigente.
Um Certificado Digital é um invólucro digital formatado de acordo com o padrão PKCS#12 da RSA contendo em seu interior um envelope digital em formato PKCS#8 o qual mantém protegida a chave privada (quando inserida no envelope), a chave pública em formato PKCS#7 e os atributos (datas de geração e validade, assinatura da Autoridade Certificadora e os dados da mesma, pontos de distribuição da Lista de Certificados Revogados, entre outros atributos).
O Certificado Digital que usamos em nossas aplicações ou para enviar à Receita Federal nossa declaração de imposto de renda, por exemplo, partiu de uma requisição feita em formato PKCS#10, foi assinada por uma Autoridade Certificadora Intermediária que, por sua vez, teve seu Certificado assinado por uma Autoridade Certificadora Raiz.
Deste modo, quando abrimos nosso Certificado Digital temos certeza de que todo o processo de geração foi validado por mais de uma entidade confiável e em sua estrutura há todos os meios necessários para garantir o uso de seu par de chaves.
Cadeia de Certificação
A Cadeia de Certificação é uma estrutura hierárquica que permite demonstrar quais entidades de Certificação foram participantes da geração de um Certificado Digital. Quando abrimos um Certificado completo, conforme a Figura 1, podemos verificar esta hierarquia.
Figura 1. Cadeia de Certificação
No exemplo apresentado vemos que existe uma Autoridade Certificadora Raiz confiável no sistema operacional e que abaixo dela existe uma Autoridade Certificadora Intermediária pronta para gerar certificados sob sua hierarquia.
Geração de Certificado Raiz
Na aplicação que começamos a desenvolver na primeira parte desta série de artigos temos uma opção de menu que nos permitiu gerar o par de chaves para a Autoridade Certificadora Raiz. Agora vamos codificar a opção que nos permita gerar um Certificado Digital Raiz para esta Autoridade Certificadora.
Este Certificado Raiz vai permitir assinar a requisição da Autoridade Certificadora Intermediária e dar subsídios para que ela possa gerar tantos Certificados de Cliente quantos necessários.
No seu projeto, abra o Designer do Form1 e no menu “Autoridade Certificadora Raiz”> opção “Gerar Certificado Raiz”, dê um duplo clique e coloque o código da Listagem 1.
Listagem 1. Chamada ao formulário de Geração de Certificado Raiz.
01 private void gerarCertificadoRaizToolStripMenuItem_Click(object sender, EventArgs e)
02 {
03 NovoCertificado nc = new NovoCertificado();
04 nc.ShowDialog();
05 }
Este Form foi descrito em nosso artigo anterior. O código do botão Salvar irá gerar uma Requisição de Certificado Digital em formato PKCS#10.
Em seguida, precisamos inserir, para a opção “Assinar Requisição de Autoridade Intermediária” do menu “Autoridade Certificadora Raiz”, o código da Listagem 2.
Listagem 2. Assinando a requisição de Certificado de Autoridade Intermediária
01 private void assinarRequisiçãoDeAutoridadeIntermediáriaToolStripMenuItem_Click
(object sender, EventArgs e)
02 {
03 try
04 {
05 CertificationRequestInfo csrInfo = null;
06 RsaKeyParameters pubKeyParameters = null;
07 Pkcs10CertificationRequest csr = null;
08 OpenFileDialog dialog = new OpenFileDialog();
09 dialog.Filter = "Requisição de Certificado (*.csr)|*.csr";
10 dialog.FilterIndex = 1;
11
12 if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
13 {
14 TextReader reader = new StreamReader(dialog.FileName);
15 PemReader pReader = new PemReader(reader);
16
17 csr = (Pkcs10CertificationRequest)pReader.ReadObject();
18 csrInfo = csr.GetCertificationRequestInfo();
19 SubjectPublicKeyInfo pubKeyInfo = csrInfo.SubjectPublicKeyInfo;
20 RsaPublicKeyStructure pubKeyStructure =
RsaPublicKeyStructure.GetInstance(pubKeyInfo.GetPublicKey());
21 pubKeyParameters = new RsaKeyParameters
(false, pubKeyStructure.Modulus, pubKeyStructure.PublicExponent);
22 bool certificadoOK = csr.Verify(pubKeyParameters);
23 }
24
25 Org.BouncyCastle.X509.X509Certificate certificadoRaiz = null;
26
27 dialog = new OpenFileDialog();
28 dialog.Filter = "Certificado Raiz (*.cer)|*.cer";
29 dialog.FilterIndex = 1;
30 if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
31 {
32 certificadoRaiz = DotNetUtilities.FromX509Certificate
(System.Security.Cryptography.X509Certificates.X509Certificate.CreateFromCertFile
(dialog.File ...
Confira outros conteúdos:
Teste unitário com NUnit
Como migrar projetos do ASP.NET MVC...
Crie relatórios com o Stimulsoft...
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.