Criando uma autoridade certificadora e certificados digitais.

Existem duas formas de se obter um certificado digital: A primeira é comprando um de uma empresa como a verisign, a outra forma é fazendo seus próprios certificados.

Neste artigo veremos as vantagens e desvantagens de cada um dos meios e como usar o OpenSSL para criar a sua própria entidade certificadora.

Adquirir um certificado tem a vantagem de ser a forma mais simples de se obter um certificado. Tem como vantagem, também, o fato de que o certificado é aceito automaticamente pela maioria dos navegadores e programas de e-mail, o que evita complicação. Se o objetivo é garantir a sua identidade para desconhecidos (como, por exemplo, no uso de um site de internet), esta é a melhor opção.  A desvantagem é que há um custo envolvido.

Criar a própria autoridade certificadora é uma forma barata de se obter certificados, e é ideal quando a autenticação e criptografia serão usadas para proteger recursos de sua empresa, aonde você tem o controle sobre aonde estes certificados serão usados. Por exemplo, eu posso fazer minha própria autoridade certificadora e emitir certificados que autentiquem redes VPN da minha empresa – crio um certificado para a matriz, um para a filial, e informo aos servidores que devem confiar na autoridade certificadora criada por mim.  Assim como posso emitir certificados que autentiquem o login de meus funcionários.

É possível, também, usar estes certificados para “serviços externos”: Nada impede de assinar digitalmente os e-mails enviados pela empresa usando certificados emitidos pela sua própria autoridade certificadora, porém todos estes e-mails serão considerados como suspeitos de fraude pelo software de e-mail pois eles não reconhecerão o certificado como válido. O mesmo vale para sites seguros (https): Eu posso usar certificados emitidos por mim mesmo para meu site, porém meu certificado não será validado automaticamente. Isto pode ser resolvido de forma simples – basta disponibilizar o certificado da autoridade certificadora e pedir para que os usuários instalem este certificado – porém há uma grande chance do usuário simplesmente não ler a mensagem, e ao receber o erro, ler a palavra “vitima de fraude”, fechar a janela e passar, desesperadamente, o antivírus no pc! ehehehehe.

Criar um certificado digital usando OpenSSL é uma tarefa complexa: Primeiramente devemos criar um arquivo de configuração que determina diversas opções do certificado, depois é necessário criar um certificado auto-assinado para servir de Raiz da entidade certificadora, e só então começar a emitir certificados. É possível personalizar todas as opções do certificado, porém este é um longo trabalho. Pretendo, futuramente, criar um passo a passo sobre este processo, mas, por enquanto, vamos seguir o caminho fácil:

Existem diversas aplicações que facilitam a nossa vida, uma delas é o tinyca, que é apenas uma interface grafica para a entidade certificadora do OpenSSL, e pode ser encontrado no repositório do ubuntu ( execute apt-get install tinyca para instalar). Após instalar, execute-a, e a primeira que aparecerá pedirá informações sobre a nova autoridade certificadora. Para criar é simples: Preencha os dados da futura entidade certificadora, e clique em OK.

tinyca1

A próxima tela permite ajustar opções avançadas da autoridade. Deixe com os valores padrão e de OK novamente.

tinyca2

E pronto. A autoridade certificadora está criada. O próximo passo é criar alguns certificados digitais. É possível fazer isto de duas formas: A primeira forma  é usar o próprio tinyCA para gerar as chaves, a requisição de certificado e o certificado em si. A segunda forma consiste em gerar as chaves e a requisição em outro computador, e usar o tinyCA para emitir o certificado.

A vantagem da primeira forma é que, além de ser prática a geração, permite que uma copia da chave privada fique armazenada na própria autoridade certificadora, e esta copia pode ser usada para recuperar a chave privada caso ela seja perdida (como se fosse um backup da chave). A desvantagem é que, a pessoa que tem acesso à autoridade certificadora pode agir maliciosamente e assinar digitalmente, criptografar e descriptografar dados de terceiros. E a desvantagem maior ainda, é que a chave privada precisa ser transmitida para o local de destino – e neste trajeto ela pode ser comprometida.

A segunda forma tem, como desvantagem, a ausência de um backup da chave (ou seja: Perdeu a chave, perdeu todos  os dados criptografados com ela), porém, tem como vantagem o fato da chave privada nunca sair do local de origem – impossibilitando o comprometimento da chave. Por exemplo, alguns SmartCards são capazes de gerar a chave privada internamente e emitir a requisição de certificado, para posterior assinatura da entidade, sendo assim, a chave privada nunca deixa o SmartCard, tornando impossivel o “vazamento” desta chave.

Para criar uma chave privada e uma solicitação de certificado no tinyCA, vá para a aba “Requests”, clique com o botão direito em qualquer parte da janela e escolha New Request.

tinyca41

Em seguida preencha os dados da requisição

tinyca51

após clicar em OK, o pedido ja estará feito. Agora é necessário assinar o pedido. Selecione-o na lista de Requests, clique com o botao direito e em seguida, Sign Request.

Aparecerá a opçao de “Sign Request (Server)” ou “Sign Request (Client)”. Se a opção client for escolhida, o certificado poderá assinar e criptografar emails, se a opção server for escolhida, ele poderá ser usado para servidor de sites seguros (https).

Após isto, é necessário exportar os certificados.

O primeiro certificado a ser exportado é o certificado raiz da autoridade certificadora (CA) – este certificado precisa ser instalado em todos os computadores que irão trabalhar com os certificados emitidos por esta autoridade.

Clique na aba CA e em seguida no botão Export CA. Salve o arquivo em um diretório de sua escolha. Existem 3 formatos de exportação: PEM, DER e TXT.

PEM e DER são parecidos. A diferença é que o PEM codifica o certificado usando o padrão base64 (usa somente caracteres imprimíveis) e adiciona um cabeçalho e um rodapé que marcam o inicio e fim dos dados do certificado. DER exporta os mesmos dados do PEM porém em formato binário, sem este cabeçalho. O conteúdo é o mesmo, muda só a codificação.

TXT exporta o arquivo em um formato que humanos podem ler.

O arquivo em formato PEM pode ser importado pelo windows, basta renomear ele para que tenha a extensão .CER e começar a distribuição. O arquivo em formato DER também pode ser importado pelo windows. Como a extensão padrão do tinyCA para arquivo DER é .der, nao é necessário renomear.

Como criamos um certificado para e-mail, precisamos exportar-lo. Como a chave privada foi gerada pela autoridade certificadora, também é necessário exportar-la. Para isto basta ir na aba Certificates, selecionar o certificado e clicar em Export.

Novamente, há vários formatos. Como o nosso objetivo é gerar um arquivo que deve ser aberto somente pelo proprietário da chave/certificado, o recomendado para este caso é o PKCS#12. Ele é capaz de armazenar a chave publica, a privada, o certificado da CA além de criptografar toda estas informações. Repare que na opção PKCS#12 ele ja informa que será exportado o certificado e a chave (Certificate and key).

tinyca7

Uma vez que as opções estejam selecionadas, clique em Save.

A próxima janela terá 3 campos a serem preenchidos:

tinyca8

Key Password, que é a senha que protege a chave privada (definida durante a criação da mesma).

Export Password, que é a senha que protegerá todo este arquivo. Defina-a agora.

Friendly name, como o próprio nome diz, é um nome que facilite a identificação do certificado, por exemplo, “Certificado do fulano”.

Se a opção Without Passphrase estiver com yes, o arquivo não será criptografada.

E a opção Add CA Certificate to PKCS#12 structure adiciona o certificado da autoridade ao arquivo. Se estiver como “no”, o certificado da autoridade deverá ser encaminhado em separado. Por padrão, a extensão deste arquivo é .p12, também reconhecida pelo windows.

Clique em OK, e pronto, seu arquivo estará salvo.

O ultimo passo consiste em importar todos estes certificados no cliente.

O certificado da autoridade certificadora deve ser facilmente obtido por todas as pessoas que o desejarem. Distribuia no site de sua empresa, em um local facilmente identificável pelo usuário.

Já o segundo arquivo que geramos, o PKCS#12, deve ser enviado somente para o dono do certificado, pois ele também contém a chave privada.

Para instalar estes certificados no windows é simples:

Copie ambos os arquivos do certificado, não esqueça de renomear o que tem a extensão .pem para .cer !

certificadosicones

De um clique duplo no arquivo correspondente ao certificado da autoridade certificadora, aparecerá uma janela que traz dados do certificado a ser importado:

Observe que este certificado contém dados da nossa autoridade, além da informação de que ele não é confiável.  Isto deve-se ao fato de que este é um certificado auto-assinado, ou seja, a chave privada dele assina os dados dele mesmo. Como não existe outro certificado que garanta a veracidade destas informações, cabe ao usuário informar ao sistema que este certificado é confiável. Todo certificado raiz tem sua confiança explicitamente definida pelo usuário, e isso inclui os certificados marcados como confiáveis que acompanham o windows (ou linux…) – a diferença é que a microsoft (ou o responsável pela distribuição linux) já os definiram como confiável previamente.

certificadowindows1

Atente aos campos Issued (emitido para) to e Issued By (emitido por), que possuem os mesmos valores – isto é porque é um certificado auto -assinado.

Na aba detalhes, há mais informações, como chave publica, numeros de série, versão, etc.

certificadowindows2

E em Certification Path, é exibida toda a hierarquia de autoridades que validam este certificado.

certificadowindows3

Para instalar este certificado clique em “Install Certificate” na aba geral.

O assistente aparecerá, e ai é só clicar em avançar, avançar, finalizar, e responder SIM ao alerta de segurança:

certificadowindows4

Ao clicar em SIM, você estará informando ao windows que este certificado é confiavel, e automaticamente todos os certificados assinados por esta autoridade serão confiaveis.

Abra novamente o arquivo do certificado, e observe que ele passou a ser um certificado de uma autoridade certificadora confiavel:

certificadowindows5

Isso conclui a instalação do certificado da autoridade certificadora no sistema. Todos os certificados assinados por ela serão considerados como confiaveis.

O arquivo no formato PKCS#12 (com extensão .p12) que contém o certificado e chave privada, que pode ser usado para assinar digitalmente e-mails, deve ser instalado no computador do proprietário do e-mail certificado. Basta dar um clique duplo que o mesmo assistente aparecerá. Quando o assistente questionar pela senha, use a senha definida no campo “senha de exportação” no tinyCA

certificadowindows6

A primeira opção “Enable strong private key protection” não descritografará a chave privada, o que causará o questionamento desta senha cada vez que ela precisar ser usada. A segunda opção permite a futura exportação desta chave, permitindo levar-las para outro computador ou fazer backup.

Vamos analizar o certificado instalado:

Observe que, desta vez, os campos Issued to (Emitido para) e Issued by (Emitido por) possuem valores diferentes: Isto deve-se ao fato deste certificado, emitido para “Meu nome” estar assinado por “Certificado raiz da autoridade certificadora”.

certificadomeucert1

certificadomeucert2

certificadomeucert3

Observe que agora há uma hierarquia: O certificado do fulano (lembra que eu coloquei este nome como nome amigavel?) está abaixo do certificado raiz.

O outlook express tem integração automatica com o sistema de certificados do windows. Ao enviar um e-mail usando este software, baste clicar na opçao de assinatura digital, e automaticamente o email será enviado assinado:

outlookexpressassinado

Quando o email for recebido, o destinatário saberá que ele foi assinado digitalmente e que a mensagem nao foi adulterada – ele só precisará ter instalado o certificado da autoridade certificadora, caso contrario receberá um alerta de certificado inválido.

Peço desculpas pelas imagens serem todas em ingles: É que meus sistema operacionais são só em ingles (questão de gosto).

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: